如何分区矢量?

时间:2010-03-12 18:15:45

标签: r vector

如何构建功能

slice(x, n) 

将返回一个向量列表,其中除了最后一个向量之外的每个向量都有大小为n,即

slice(letters, 10)

将返回

list(c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j"),
     c("k", "l", "m", "n", "o", "p", "q", "r", "s", "t"),
     c("u", "v", "w", "x", "y", "z"))

2 个答案:

答案 0 :(得分:8)

您可以使用split功能:

split(letters, as.integer((seq_along(letters) - 1) / 10))

如果你想把它变成一个新功能:

slice <- function(x, n) split(x, as.integer((seq_along(x) - 1) / n))
slice(letters, 10)

答案 1 :(得分:8)

slice<-function(x,n) {
    N<-length(x);
    lapply(seq(1,N,n),function(i) x[i:min(i+n-1,N)])
}