2013-01-18 70 views
0

可以說我有一個data.frame看起來像這樣:創建2列開出4

structure(list(HUGO.Int1 = c("AATF", "AATF", "AATF", "ABHD16A", 
"ABHD16A", "ABHD16A"), Mut.Int1 = c(0, 0, 0, 0, 0, 0), HUGO.Int2 = c("DAPK3", 
"PAWR", "CHEK1", "RNF5", "ATP5G3", "HM13"), Mut.Int2 = c(0, 0, 
0, 0, 0, 0)), .Names = c("HUGO.Int1", "Mut.Int1", "HUGO.Int2", 
"Mut.Int2"), row.names = c(12223L, 15033L, 31655L, 11280L, 11463L, 
14106L), class = "data.frame") 

,我想HUGO.Int2Mut.Int2低於HUGO.Int1Mut.Int1

我試着

data.frame(rbind(c(plots$HUGO.Int1, plots$Mut.Int1), 
      c(plots$HUGO.Int2, plots$Mut.Int2))) 

但後來我只得到2列,Hugo.int1一個d Mut.int1。我想知道如何正確粘貼第一和第二下面的第三和第四列。

回答

2

的問題是,你隨機卡在那裏rbind,排序的。這是你的嘗試或許應該看起來像:

dat <- structure(list(HUGO.Int1 = c("AATF", "AATF", "AATF", "ABHD16A", 
+ "ABHD16A", "ABHD16A"), Mut.Int1 = c(0, 0, 0, 0, 0, 0), HUGO.Int2 = c("DAPK3", 
+ "PAWR", "CHEK1", "RNF5", "ATP5G3", "HM13"), Mut.Int2 = c(0, 0, 
+ 0, 0, 0, 0)), .Names = c("HUGO.Int1", "Mut.Int1", "HUGO.Int2", 
+ "Mut.Int2"), row.names = c(12223L, 15033L, 31655L, 11280L, 11463L, 
+ 14106L), class = "data.frame") 
> data.frame(col1 = c(dat[,1],dat[,3]),col2 = c(dat[,2],dat[,4])) 
     col1 col2 
1  AATF 0 
2  AATF 0 
3  AATF 0 
4 ABHD16A 0 
5 ABHD16A 0 
6 ABHD16A 0 
7 DAPK3 0 
8  PAWR 0 
9 CHEK1 0 
10 RNF5 0 
11 ATP5G3 0 
12 HM13 0 
+0

還我很好修復我不得不說,我喜歡這個! –

1

不知道這是否是你想要的,但它的工作原理:

data1 <- structure(list(HUGO.Int1 = c("AATF", "AATF", "AATF", "ABHD16A", 
"ABHD16A", "ABHD16A"), Mut.Int1 = c(0, 0, 0, 0, 0, 0), HUGO.Int2 = c("DAPK3", 
"PAWR", "CHEK1", "RNF5", "ATP5G3", "HM13"), Mut.Int2 = c(0, 0, 
0, 0, 0, 0)), .Names = c("HUGO.Int1", "Mut.Int1", "HUGO.Int2", 
"Mut.Int2"), row.names = c(12223L, 15033L, 31655L, 11280L, 11463L, 
14106L), class = "data.frame") 

data2 <- cbind(data1$HUGO.Int2, data1$Mut.Int2) 
data1$HUGO.Int2 <- NULL 
data1$Mut.Int2 <- NULL 
colnames(data2) <- colnames(data1) 
data3 <- rbind(data1,data2) 


> data3 
     HUGO.Int1 Mut.Int1 
12223  AATF  0 
15033  AATF  0 
31655  AATF  0 
11280 ABHD16A  0 
11463 ABHD16A  0 
14106 ABHD16A  0 
7   DAPK3  0 
8   PAWR  0 
9   CHEK1  0 
10   RNF5  0 
11  ATP5G3  0 
12   HM13  0 
1
df <- structure(list(HUGO.Int1 = c("AATF", "AATF", "AATF", "ABHD16A", 
"ABHD16A", "ABHD16A"), Mut.Int1 = c(0, 0, 0, 0, 0, 0), HUGO.Int2 = c("DAPK3", 
"PAWR", "CHEK1", "RNF5", "ATP5G3", "HM13"), Mut.Int2 = c(0, 0, 
0, 0, 0, 0)), .Names = c("HUGO.Int1", "Mut.Int1", "HUGO.Int2", 
"Mut.Int2"), row.names = c(12223L, 15033L, 31655L, 11280L, 11463L, 
14106L), class = "data.frame") 

df2 <- df[,1:2] 
df2[7:12,1:2] <- df[,3:4] 
2

另一種方式:

names(x) <- chartr('12', 'XX', names(x)) # replaces 1s and 2s in names with 'X' 
rbind(x[1:2], x[3:4]) 
+0

感謝您的快速解決 –