在SO(LINK)的问题上,一个海报问了一个问题,我给出了一个可行的答案,但是有一个错误的部分,从矢量创建list
作为列表传递的指数。于是,莱斯说,我有这样的载体:列出等长向量
n <- 1:10
#> n
# [1] 1 2 3 4 5 6 7 8 9 10
比方说,我想它分解成向量的列表,每个向量的长度是3。有什么办法最好(代码&或最快最短的量)的完成这个?因为10/3(length(n) - 10 %% 3
)的余数为1(10 %% 3
),所以我们要抛出第10项。
这是理想的结果
list(1:3, 4:6, 7:9)
这会给我们这些的指标不能让一组三:
(length(n) + 1 - 10 %% 3):length(n)
编辑
这里是一个Wojciech Sobala在other thread上发布了一个有趣的方法,这与(我让他们在这里回答,如果他们这样做,我会删除t他编辑)
n <- 100
l <- 3
n2 <- n - (n %% l)
split(1:n2, rep(1:n2, each=l, length=n2))
作为一个功能:
indices <- function(n, l){
if(n > l) stop("n needs to be smaller than or equal to l")
n2 <- n - (n %% l)
cat("numbers", (n + 1 - n %% l):n, "did not make an index of length", l)
split(1:n2, rep(1:n2, each=l, length=n2))
}
所有伟大的答案,但我认为X他是最短的代码明智的。谢谢,那正在扰乱我。比我所做的更好的方法。 –