2014-12-09 4 views
5

'daki eşit olmayan parçalara bölme Başka bir vektörle değişken bölünmüş uzunlukları belirtmek dışında, here ile aynı soruyu sahibim. Yani, böyle bir şey:Bir vektörü R

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

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

[[3]] 
[1] "ex7" 

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

Ben split ile bunu yapmanın en iyi yolu anlamaya olamaz:

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) 

bana aşağıdaki listeyi vermelidir. Herhangi bir fikir?

Teşekkürler!

cevap

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

Teşekkür ederiz. Çok basit ... ve henüz: R. Yardımı takdir ediyorum. –

+0

Bir şey değil! Cevabını kabul ederseniz hoş olurdu, eğer sizin için yararlı olsaydı ... – DatamineR

+0

6 dakika süre sınırını beklemek zorunda kaldı :) –

3

belirlenmiş konumlarda çeşitli veri türleri bölmek qdapTools arasında dev sürümüne daha genel bir yöntem ekledik. İşte o yaklaşımdır: vektörlerin uygulandığında

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

fonksiyonu esasen @ RStudent cevabı benzer bir kod sarar.

+0

Daha fazla bilgi qdap ve qdapTools'da. Öğrenecek çok fonksiyon var. Bu güzel bir işlev. :) – jazzurro

+0

Bunun için teşekkürler! Bilinmesi güzel. –