Как я могу разделить вектор? - PullRequest
8 голосов
/ 12 марта 2010

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

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 ]

8 голосов
/ 13 марта 2010
slice<-function(x,n) {
    N<-length(x);
    lapply(seq(1,N,n),function(i) x[i:min(i+n-1,N)])
}
8 голосов
/ 12 марта 2010

Вы можете использовать функцию 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...