Как я могу разделить вектор?

Как я могу создать функцию

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"))

?

8
задан Karsten W. 12 March 2010 в 18:15
поделиться

2 ответа

slice<-function(x,n) {
    N<-length(x);
    lapply(seq(1,N,n),function(i) x[i:min(i+n-1,N)])
}
8
ответ дан 5 December 2019 в 10:40
поделиться

Вы можете использовать функцию 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)
8
ответ дан 5 December 2019 в 10:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: