将data.frame折叠为矢量

时间:2012-10-09 08:40:59

标签: r dataframe

我有一个这样的数据框:

COL1  COL2  COL3 

   a           h
   b     f    
   c     g       
   d           j

我想要以下输出:

 COL  
   a    
   b    
   c    
   d   
   f   
   g   
   h   
   j   

如何做到这一点? 提前谢谢!

3 个答案:

答案 0 :(得分:6)

如果您的data.frame名为dat,请尝试:

unlist(dat, use.names=FALSE)

您可能还想尝试以下操作:

as.character(unlist(dat, use.names=FALSE))
c(na.omit(as.character(unlist(dat, use.names=FALSE))))

如果您的数据作为因素输入,则可能很有用。

另外,在你的问题中,你看起来似乎没有一个基本的“向量”,而是一列data.frame。因此,像dat2 <- data.frame(COL = c(na.omit(as.character(unlist(dat, use.names=FALSE)))))这样的东西可能就是你要找的东西。

答案 1 :(得分:4)

do.call(c, your_data_frame)

一个例子:

> dat <- data.frame(a = 1:3, b = 2:4)
> do.call(c, dat)
a1 a2 a3 b1 b2 b3 
 1  2  3  2  3  4

这将获取data.frame的每一列,并将其视为c的单独输入,因此您只需将所有内容连接到一个向量中。

答案 2 :(得分:3)

您可以使用unlist

dat <- data.frame(A1 = letters[1:3],
                  A2 = letters[2:4],
                  A3 = c("f", "a", "b"), stringsAsFactors = FALSE)

unlist(dat)

# A11 A12 A13 A21 A22 A23 A31 A32 A33 
# "a" "b" "c" "b" "c" "d" "f" "a" "b"