我想将一个向量(x)分成多个向量(x1,x2,...,xn)。
我的输入:x< - 1:10
我的愿望输出:
x1 <- c(1,2,3,4)
x2 <- c(2,3,4,5)
x3 <- c(3,4,5,6)
x4 <- c(4,5,6,7)
x5 <- c(5,6,7,8)
x6 <- c(6,7,8,9)
x7 <- c(7,8,9,10)
我的代码(感谢Mrs.Richard Herron的灵感):
x <- 1:10
n <-3
vectors <- function(x, n) split(x, sort(rank(x) %% n))
vectors(x,n)
非常感谢!
答案 0 :(得分:2)
我们可以使用lapply
循环遍历'x'的序列,以便我们在length
的每个元素中都有list
为4,创建一个序列({{ 1}})从索引到索引+ n,子集'x'。如果需要单独的:
,我们会设置vector
的名称并使用list
。
list2env
或者我们也可以在全局环境中创建n <- 3
lst <- lapply(1:(length(x)-n), function(i) x[i:(i+n)])
names(lst) <- paste0("x", seq_along(lst))
list2env(lst, envir = .GlobalEnv)
x1
#[1] 1 2 3 4
x2
#[1] 2 3 4 5
x3
#[1] 3 4 5 6
而不是多个matrix
,其中每行对应于感兴趣的矢量
vector