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

17
我有这个 data.frame:

v.row <- data.frame(
  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
)

我会删除所有行和列名称,以便获得一个简单的向量。但是as.vector函数不起作用(它返回一个数据框)。
> 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
5个回答

25

查看?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

2

关于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

我从csv中获取了这个数据框

x <- as.numeric(dataframe$column_name)

非常好用。(同样的,dataframe[3],其中3是我的列索引,没有起作用)


1

0
另一个选项是使用as.matrixas.vector,像这样:

as.vector(as.matrix(v.row))
#>  [1] 177 165 177 177 177 177 145 132 126 132 132 132 126 120 145 167 167 167 167
#> [20] 165 177 177 177 177

使用 reprex v2.0.2 于2022年8月27日创建


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接