2016-03-27 14 views
1

Bir matrisin ayrılmasından sonra bir veri çerçevesinden bir liste veya çok sayıda data.frame oluşturmak istiyorum. Bir matris oluşturmak için kullanılan işlevi kullanıyorum. Örneğin :Bir veri çerçevesini ayırın ve çok sayıda veri çerçevesi veya liste oluşturun

combos<-combn(1:3, 2) 
combos 
[,1] [,2] [,3] 
[1,] 1 1 2 
[2,] 2 3 3                

I 3 sütunlu bir veri çerçevesi sonra.

col1<-c(0,2,4);col2<-c(1,3,5);col3<-c(6,7,8) 
df<-cbind.data.frame(col1,col2,col3) 
df 
     col1 col2 col3 
1 0 1 6 
2 2 3 7 
3 4 5 8 

Bu veri çerçevesi veya listede sonuçlanır almak istiyorum tarak kullanarak:

df1 
     col1 col2 
1 0 1 
2 2 3 
3 4 5 
df2 
     col1 col3 
1 0  6 
2 2  7 
3 4  8 
df3 
     col2 col3 
1  1 6 
2  3 7 
3  5 8  

Bunun ardından, ben almak için diğer dataframes veya liste ile bu dataframe veya liste katılmak isteyeyim Bu sonucu:

col1<-c('a','c'); col2<-c('b','d') 
dfo<-cbind.data.frame(col1,col2) 
     col1 col2 
1 a b 
2 c d 

df1o 
     col1 col2 
1 0 1 
2 2 3 
3 4 5 
4 a b 
5 c d 

df2o 
     col1 col3 
1 0  6 
2 2  7 
3 4  8 
4 a  b 
5 c  d 

df3o 
     col2 col3 
    1  1 6 
    2  3 7 
    3  5 8 
    4  a b 
    5  c d 

DFO bu yeni verileri kullanarak ben

DFO 3000 df ve 5000 var
+1

'combn: ('(3: 1, 2, FUN = fonksiyonu (X) rbind (df [x] setNames (DFO, isim (df [x]))), = YANLIŞ basitleştirmek) Sayıları ve bu gibi harfleri birleştirmek istediğinizi varsayarak) – user20650

+1

Teşekkürler user20650. Mesajda hatalıyım. sadece örnek mektuplar vardı. Sayıları ve sayıları birleştirmek istiyorum, (dfo da sayı). Üzgünüm, ilk mesajımdı! –

+0

Bu düzenlemede matrisler yok edildi. –

cevap

0

Aslında, bir liste üzerinde döngü için lapply kullanabilirsiniz.

combos <- combn(1:3, 2) 

col1 <- c(0,2,4); col2 <- c(1,3,5); col3 <- c(6,7,8) 
df <- cbind.data.frame(col1,col2,col3) 

df.1 <- lapply(1:ncol(combos), function(i){df[, combos[,i]]}) 

col1 <- c('a','c'); col2 <- c('b','d') 
dfo <- cbind.data.frame(col1,col2) 

dfo.1 <- lapply(df.1, function(x){ 
    names(dfo) <- names(x) 
    return(rbind(x, dfo)) 
}) 
# [[1]] 
# col1 col2 
# 1 0 1 
# 2 2 3 
# 3 4 5 
# 4 a b 
# 5 c d 
# 
# [[2]] 
# col1 col3 
# 1 0 6 
# 2 2 7 
# 3 4 8 
# 4 a b 
# 5 c d 
# 
# [[3]] 
# col2 col3 
# 1 1 6 
# 2 3 7 
# 3 5 8 
# 4 a b 
# 5 c d 
İlgili konular