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

Cov*_*ovi 1 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 惯用的方法来做到这一点。在其他语言中,for 循环就足够了。

或者,由于我是 R 的新手,因此这个问题的设置一开始可能并不符合习惯。如果有请指出。但是输入固定为列表或向量。

谢谢!

sgi*_*ibb 5

正如@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
Run Code Online (Sandbox Code Playgroud)