将矢量拆分为R中的多个矢量

时间:2016-08-08 11:58:41

标签: r

我想将一个向量(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)

非常感谢!

1 个答案:

答案 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