如何分区矢量?

Kar*_* W. 8 r vector

我该如何构建一个函数

slice(x, n) 
Run Code Online (Sandbox Code Playgroud)

这将返回一个向量列表,其中每个向量除了可能是最后一个具有大小n,即

slice(letters, 10)
Run Code Online (Sandbox Code Playgroud)

会回来的

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"))
Run Code Online (Sandbox Code Playgroud)

Sha*_*ane 8

你可以使用这个split功能:

split(letters, as.integer((seq_along(letters) - 1) / 10))
Run Code Online (Sandbox Code Playgroud)

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

slice <- function(x, n) split(x, as.integer((seq_along(x) - 1) / n))
slice(letters, 10)
Run Code Online (Sandbox Code Playgroud)


Jyo*_*rya 8

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