Как я могу создать функцию
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"))
?
slice<-function(x,n) {
N<-length(x);
lapply(seq(1,N,n),function(i) x[i:min(i+n-1,N)])
}
Вы можете использовать функцию 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)