我有一个像这样的数据框:
>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
我不明白。 这些数字从何而来? 如何将数据框正确转换为数字矩阵?
答案 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
。