将列表转换为"列表列表"

时间:2017-01-18 17:59:32

标签: r list

我如何改变第一个" long"列表l:

l <- list()
n=1
for (i in 1:9) {
  l[[length(l)+1]] <- n:(n+2)
  n=n+3
}

进入一个更广泛但更短的列表列表lol:在下一个代码段中,我在l每3个元素之后断开。

lol <- list()
lol[[1]] <- list(1:3,4:6,7:9)
lol[[2]] <- list(10:12,13:15,16:18)
lol[[3]] <- list(19:21,22:24,25:27)

有什么想法吗?如果我想在l的每2个元素后断开怎么办。

1 个答案:

答案 0 :(得分:2)

您可以按向量1,1,1,2,2,2,3,3,3分割它:

n = 3                                     # the length of each sub list
split(l, (seq_along(l) - 1) %/% n)

identical(lol, setNames(split(l, (seq_along(l) - 1) %/% 3), NULL))
# [1] TRUE