一个相对简单的问题,但答案似乎没有找到我。目前,我有一个类似于此的数据框:
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的新手。任何帮助(或推荐可能帮助我处理这个问题的函数)都将不胜感激。
答案 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.frame
或matrix
中,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