2015-07-05 35 views
8

我有一個data.frame,我想在一個新的data.frame中加入一列。將Rbind中的兩個向量R

df1 <- data.frame(col1 = 1:3, col2 = 4:6, col3 = 7:9) 

我該如何創建一個新的data.frame與單列1:9?

+2

標題不完全匹配的說明... –

+7

'庫( reshape2);熔體(DF1)' – jenesaisquoi

回答

9

因爲data.frame s基本上是列的列表,所以unlist(df1)會給你一個大的所有值的向量。現在,你可以簡單地從它建立一個新的data.frame

data.frame(col = unlist(df1)) 
5

你可以嘗試:

as.data.frame(as.vector(as.matrix(df1))) 
# as.vector(as.matrix(df1)) 
#1       1 
#2       2 
#3       3 
#4       4 
#5       5 
#6       6 
#7       7 
#8       8 
#9       9 
6

如果你想要一個指標過於:

stack(df1) 
# values ind 
# 1  1 col1 
# 2  2 col1 
# 3  3 col1 
# 4  4 col2 
# 5  5 col2 
# 6  6 col2 
# 7  7 col3 
# 8  8 col3 
# 9  9 col3 
6

只是提供了一套完整的如何做到這一點,這裏是tidyr的方式。

library(tidyr) 
gather(df1) 
    key value 
1 col1  1 
2 col1  2 
3 col1  3 
4 col2  4 
5 col2  5 
6 col2  6 
7 col3  7 
8 col3  8 
9 col3  9 
6

還有一個使用c功能:

data.frame(col11 = c(df1,recursive=TRUE)) 
     col11 
col11 1 
col12 2 
col13 3 
col21 4 
col22 5 
col23 6 
col31 7 
col32 8 
col33 9 
2

另一種方法,只是使用Reduce ...

data.frame(Reduce(c, df1))