2014-12-09 7 views
5

Ich habe die gleiche Frage wie here, außer ich möchte die Variable Split-Längen mit einem anderen Vektor angeben. So etwas wie folgt aus:Split einen Vektor in ungleiche Stücke in 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) 

sollte mir die folgende Liste geben:

result.list 
[[1]] 
[1] "ex1" "ex2" "ex3" "ex4" 

[[2]] 
[1] "ex5" "ex6" 

[[3]] 
[1] "ex7" 

[[4]] 
[1] "ex8" "ex9" "ex10" 

Ich kann nicht den besten Weg finden, um dies zu tun mit split. Irgendwelche Ideen?

Danke!

Antwort

8
split(example.data, rep(1:4, c(4,2,1,3))) 
+0

Vielen Dank. So einfach ... und doch: R. Ich schätze die Hilfe. –

+0

Gern geschehen! Es wäre nett, wenn du die Antwort akzeptierst, wenn es für dich nützlich wäre ... – DatamineR

+0

musste auf das 6-Minuten-Zeitlimit warten :) –

3

Ich habe eine allgemeine Methode, um die Entwickler-Version von qdapTools hinzugefügt verschiedenen Datentypen an bestimmten Stellen zu spalten. Hier ist dieser Ansatz:

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

Die Funktion im Wesentlichen wickelt Code ähnlich @ RStudent Antwort, wenn auf Vektoren angewendet.

+0

Mehr zum Einchecken qdap und qdapTools. So viele Funktionen zu lernen. Das ist eine nette Funktion. :) – jazzurro

+0

danke dafür! Gut zu wissen. –