使用R将data.frame转换为简单向量

时间:2013-02-17 19:10:57

标签: r

我有data.frame

> print(v.row)
    X1  X2  X3  X4  X5  X6  X7  X8  X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24
57 177 165 177 177 177 177 145 132 126 132 132 132 126 120 145 167 167 167 167 165 177 177 177 177
> dput(v.row)
structure(list(X1 = 177, X2 = 165, X3 = 177, X4 = 177, X5 = 177, 
    X6 = 177, X7 = 145, X8 = 132, X9 = 126, X10 = 132, X11 = 132, 
    X12 = 132, X13 = 126, X14 = 120, X15 = 145, X16 = 167, X17 = 167, 
    X18 = 167, X19 = 167, X20 = 165, X21 = 177, X22 = 177, X23 = 177, 
    X24 = 177), .Names = c("X1", "X2", "X3", "X4", "X5", "X6", 
"X7", "X8", "X9", "X10", "X11", "X12", "X13", "X14", "X15", "X16", 
"X17", "X18", "X19", "X20", "X21", "X22", "X23", "X24"), row.names = 57L, class = "data.frame")

我会删除所有行名和列名,以便得到一个简单的vector。但是as.vector函数不起作用(它返回data.frame)。

> as.vector(v.row)
    X1  X2  X3  X4  X5  X6  X7  X8  X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24
57 177 165 177 177 177 177 145 132 126 132 132 132 126 120 145 167 167 167 167 165 177 177 177 177

3 个答案:

答案 0 :(得分:20)

请参阅?unlist

  

给定列表结构x,unlist简化它以生成向量   其中包含x中出现的所有原子成分。

unlist(v.row)
[1] 177 165 177 177 177 177 145 132 126 132 132 132 126 120 145 167 167 167
       167 165 177 177 177 177

修改

您也可以使用as.vector执行此操作,但需要提供正确的模式:

 as.vector(v.row,mode='numeric')
 [1] 177 165 177 177 177 177 145 132 126 132 132 132 126 120 145 167 167
      167 167 165 177 177 177 177

答案 1 :(得分:1)

我有来自csv的数据框

x <- as.numeric(dataframe$column_name)

工作得很好。 (与dataframe[3]相同,3是我的列索引无效)

答案 2 :(得分:0)

请注意关于agstudy答案的第二部分:

df <- data.frame(1:10) 
as.vector(df, mode="integer") #Error

as.vector(df[[1]],mode="integer") #Works; 
as.vector(df[[1]]) #Also works

即,显然,即使只有1个元素,您也必须从数据框中选择列表元素。