我有一个数值向量,我需要获取向量列表形式的间隔。
我认为这很容易,但我真的很难找到一种好的、简单的方法。
一种糟糕且复杂的方法是粘贴向量及其滞后,然后分割结果。
这是有效但丑陋的表示:
library(tidyverse)
xx = c(1, 5, 10 ,15 ,20)
paste0(lag(xx), "-", xx-1) %>% str_split("-") #nevermind the first one, it cannot really make sense anyway
#> [[1]]
#> [1] "NA" "0"
#>
#> [[2]]
#> [1] "1" "4"
#>
#> [[3]]
#> [1] "5" "9"
#>
#> [[4]]
#> [1] "10" "14"
#>
#> [[5]]
#> [1] "15" "19"
由reprex package于2020年9月6日创建(v0.3.0)
有没有更简洁的方法来做同样的事情?
最佳答案
您可以使用 map
:
Map(c, xx[-length(xx)], xx[-1] - 1)
#[[1]]
#[1] 1 4
#[[2]]
#[1] 5 9
#[[3]]
#[1] 10 14
#[[4]]
#[1] 15 19
我们还可以使用 lapply
迭代变量的长度。
lapply(seq_along(xx[-1]), function(i) c(xx[i], xx[i+1] - 1))
关于r - 如何获取向量列表形式的间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63765773/