按行而不是列取消列表数据框

时间:2015-08-13 13:12:44

标签: r vector dataframe unroll

一个相对简单的问题,但答案似乎没有找到我。目前,我有一个类似于此的数据框:

0   0   0   1   1
0   1   0   1   1
2   1   1   0   3

我正在尝试按行将其转换为单行数据。我使用了unlist函数,它做了我想要的,但是按列给了我。它给了我这个:

0,0,2,0,1,1,0,0,1,1,1,0,1,1,3

但我想要的是:

0,0,0,1,1,0,1,0,1,1,2,1,1,0,3

如果这似乎是一个愚蠢的问题,我道歉,但我仍然是R的新手。任何帮助(或推荐可能帮助我处理这个问题的函数)都将不胜感激。

2 个答案:

答案 0 :(得分:18)

我们可以采用数据集的转置(t),然后使用c来获取矢量输出

 c(t(df1))
 #[1] 0 0 0 1 1 0 1 0 1 1 2 1 1 0 3

通过转置,我们将'data.frame'转换为'matrix'。在data.framematrix中,unlist/c操作都按列发生。因此,转置交换列的行和反之,我们得到预期的结果。

答案 1 :(得分:1)

您也可以尝试as.vector()

x<-matrix(c(0,0,2,0,1,1,0,0,1,1,1,0,1,1,3),3,5)

x
     [,1] [,2] [,3] [,4] [,5]
[1,]    0    0    0    1    1
[2,]    0    1    0    1    1
[3,]    2    1    1    0    3

as.vector(t(x))
[1] 0 0 0 1 1 0 1 0 1 1 2 1 1 0 3