每个子列表的长度指定为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的完全新手,所以这个问题的设置可能首先不是惯用语。如果是这样,请好好指出来。但是输入被固定为列表或向量。
谢谢!
答案 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