2015-05-06 22 views
6

Bir sütunda belirli bir değere dayanarak bir matrisi alt kümeye almaya çalışıyorum. Ancak alt kümelerimi bir dizi ayrı matriste istiyorum. örneğin, ben bir matris ccc var kiR - Bir koşula göre matris grubunun gruplandırılması

aaa=c(1,1,1,2,5,1,2,1,1,3,1,1,1,1,1,1,4) 
bbb=c(4,4,4,4,3,3,3,3,2,2,2,2,3,4,5,6,7) 
ccc=cbind(aaa,bbb) 

I ccc[,1]==1 ve aynı zamanda da alt küme bir kırılma noktasına ayrılmış birkaç matrisler ayrılabilir istediğiniz koşulu kullanılarak alt kümesi istiyoruz. Molalar, aaa==1'un çalışmalarına dayanmaktadır. alt küme matrisleri olmak

ddd1 
    aaa bbb 
[1,] 1 4 
[2,] 1 4 
[3,] 1 4 

ddd2 
aaa bbb 
    1 3 

ddd3 
    aaa bbb 
[1,] 1 3 
[2,] 1 2 

ddd4 
    aaa bbb 
[1,] 1 2 
[2,] 1 2 
[3,] 1 3 
[4,] 1 4 
[5,] 1 5 
[6,] 1 6 

ddd1,..,ddd4 açıkça aşağıdaki şekilde benim çıkışları ihtiyaç yapmak için. Umarım bunu açıklığa kavuşturdum. Herhangi bir öneri nasıl yapılır?

+3

Sizin mola noktaları hiç net değildir. Molaların ardındaki mantık nedir? 'ccc $ aaa' da bir matrisiniz olduğu için kullanılamaz ve' $ 'sadece data.frames/lists için çalışır. Ccc <- data.frame (aaa, bbb) 'kullanmak istediniz mi? – thelatemail

+2

@thelatemail Bölünme, aaa == 1'lik çalışmalara dayanıyor, bence – Frank

cevap

5

Kullanım split ve cumsum:

ccc <- data.frame(ccc) 
split(ccc[ccc$aaa==1,], cumsum(ccc$aaa!=1)[ccc$aaa==1]) 

#$`0` 
# aaa bbb 
#1 1 4 
#2 1 4 
#3 1 4 
# 
#$`2` 
# aaa bbb 
#6 1 3 
# 
#$`3` 
# aaa bbb 
#8 1 3 
#9 1 2 
# 
#$`4` 
# aaa bbb 
#11 1 2 
#12 1 2 
#13 1 3 
#14 1 4 
#15 1 5 
#16 1 6 
+0

Çok teşekkürler. Daha önce 'bölünmüş' kullanmadım. Döngülerle uğraşıyordum. – user3420448

İlgili konular