R:给出一个列表,返回一个等长子列表列表

时间:2013-09-17 18:30:17

标签: r

每个子列表的长度指定为LEN。除了可能的最后一个子列表之外,所有子列表都应该在原始列表中具有完全LEN元素。

输入可以是列表(具有相同类型的元素)或向量。输出类型应该对应。

例如:

鉴于c(1, 2, 3, 4, 5)LEN = 2,该函数应返回c(c(1, 2), c(3, 4), c(5))

鉴于list("", "hi", "world", "R is hard")LEN = 2,该函数应返回list(list("", "hi"), list("world", "R is hard")

我正在寻找一种R-idiomatic方法来做到这一点。在其他语言中,for循环就足够了。

或者,因为我是R的完全新手,所以这个问题的设置可能首先不是惯用语。如果是这样,请好好指出来。但是输入被固定为列表或向量。

谢谢!

1 个答案:

答案 0 :(得分:2)

正如@joran所提到的,你应该看看?split。 解决您的具体问题:

a <- 1:5
n <- length(a)
k <- 2 ## your LEN
split(a, rep(1:ceiling(n/k), each=k)[1:n])
#$`1`
#[1] 1 2
#
#$`2`
#[1] 3 4
#
#$`3`
#[1] 5