Разбить вектор на неравные куски в R
у меня тот же вопрос, что и здесь, но я хочу указать регулируемой длины с другим вектором. Так, что-то вроде этого:
example.data<-paste("ex",1:10,sep="")
example.data
[1] "ex1" "ex2" "ex3" "ex4" "ex5" "ex6" "ex7" "ex8" "ex9" "ex10"
split.lens <- c(4,2,1,3)
должны дать мне следующий список:
result.list
[[1]]
[1] "ex1" "ex2" "ex3" "ex4"
[[2]]
[1] "ex5" "ex6"
[[3]]
[1] "ex7"
[[4]]
[1] "ex8" "ex9" "ex10"
Я не могу придумать лучший способ сделать это с split
. Есть идеи?
спасибо!
2 ответов
Я добавил более общий метод к версии dev qdapTools для разделения различных типов данных в определенных местах. Вот такой подход:
## install qdapTools
devtools::install_github("trinker/qdapTools")
library(qdapTools)
loc_split(example.data, head(cumsum(split.lens) + 1, -1))
## [[1]]
## [1] "ex1" "ex2" "ex3" "ex4"
##
## [[2]]
## [1] "ex5" "ex6"
##
## [[3]]
## [1] "ex7"
##
## [[4]]
## [1] "ex8" "ex9" "ex10"
функция по существу обертывает код, аналогичный ответу @RStudent при применении к векторам.