0

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

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

例如:

给定c(1, 2, 3, 4, 5)and LEN = 2,函数应该返回c(c(1, 2), c(3, 4), c(5))

给定list("", "hi", "world", "R is hard")and LEN = 2,函数应该返回list(list("", "hi"), list("world", "R is hard")

我正在寻找一种 R 惯用的方式来做到这一点。在其他语言中,一个 for 循环就足够了。

或者,由于我是 R 的完全新手,所以这个问题的设置可能一开始就不是惯用的。如果是这样,请指出。但是,输入固定为列表或向量。

谢谢!

4

1 回答 1

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
于 2013-09-17T18:41:38.870 回答