【发布时间】:2017-11-14 07:33:52
【问题描述】:
我是 R 的初学者。我有一个名为 data_mat 的数据集。它只有二进制变量,即所有变量都有 0 或 1 作为值。它看起来像这样:
Elderflower high low medium
[1,] 0 1 0 0
[2,] 0 1 0 0
[3,] 0 1 0 0
[4,] 0 1 0 0
它是一个数字矩阵。在使用以下代码向其中添加另外 3 列(本质上也是二进制)时,它不再保持数字:
data_mat<-cbind(data_mat,datam[,c(5:6,9)])
执行上述代码后,数据现在如下所示:
Elderflower high low medium Sugar Chewy Content
[1,] "0" "1" "0" "0" "1" "1" "1"
[2,] "0" "1" "0" "0" "0" "0" "1"
[3,] "0" "1" "0" "0" "1" "1" "1"
[4,] "0" "1" "0" "0" "0" "0" "1"
为了将此矩阵转换为数字,我运行了以下代码:
data11<-matrix(as.numeric(unlist(data_mat,use.names =
TRUE)),nrow=nrow(data_mat))
这样,我的数据仍然是一个数字矩阵,但列名消失了。现在看起来像这样:
[,59] [,60]
[1,] 1 1
[2,] 0 1
[3,] 1 1
[4,] 0 1
请建议我如何解决这个问题?动机是在将新列添加到现有数字矩阵后获得列名完整的数字矩阵。
【问题讨论】:
-
您的问题是
datam似乎是一个字符矩阵。您应该调查为什么会这样并解决它。 -
用
dput()显示你的数据或者给出你的数据的定义!请阅读minimal reproducible example和stackoverflow.com/questions/5963269/… -
@Roland 是的 datam 是一个字符矩阵。请让我知道我如何将此矩阵中的二进制列添加到另一个数字矩阵中,这样结果矩阵就是列名存在的数字
-
那么
datam应该不是一个矩阵。它应该是 data.frame,因为与矩阵相比,data.frame 可以保存不同类型的数据。那你就不会有这个问题了。
标签: r string matrix numeric data-conversion