data.matrix()修改R中数据帧的第一列

时间:2018-07-13 09:14:24

标签: r

我有一个像这样的数据框:

>df
         classA  classB  classC  classD
item1         0       0      34       6
item2         2      12     267      12
item3        45      26       3    5876
item4        23     110     674      17
item5         1      14      98      17
>class(df)
[1] "data.frame"
>typeof(df)
[1] "list"
>is.factor(df)
[1] FALSE

当我将其转换为数值矩阵(对其执行一些操作)时,第一列的值(仅)会更改。

>data.matrix(df)
          classA  classB  classC  classD
 item1         1       0      34       6
 item2         3      12     267      12
 item3        59      26       3    5876
 item4        34     110     674      17
 item5         2      14      98      17

我不明白。 这些数字从何而来? 如何将数据框正确转换为数字矩阵?

2 个答案:

答案 0 :(得分:2)

您应该使用as.matrix

> df
         ClassA ClassB ClassC ClassD
    1      0      0     34      6
    2      2     12    267     12
    3     45     26      3   5876
    4     23    110    674     17
    5      1     98     98     17
 > as.matrix(df)
       ClassA ClassB ClassC ClassD
[1,]      0      0     34      6
[2,]      2     12    267     12
[3,]     45     26      3   5876
[4,]     23    110    674     17
[5,]      1     98     98     17
> class(as.matrix(df))
[1] "matrix"

答案 1 :(得分:1)

我猜想df的第一列是一个因素(您可以通过键入is.factor(df[,1])进行检查)。 函数data.matrix返回因子的内部值。这就是为什么您得到不同的数字。

一种避免这种情况的方法是先将第一列转换为数字列,或者改用as.matrix