我是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
请建议我如何解决这个问题?动机是在将新列添加到现有数值矩阵之后,使列名完整的数字矩阵。
答案 0 :(得分:0)
使用定义的colClasses
data_mat <- read.table(path.to.data, header = TRUE, colClasses = "numeric")
这可确保您的数据为numeric
,并且您可以使用cbind
按照您的方式添加更多列。 couse datam
也需要数字。作为副作用,定义colClasses
也会加速阅读过程。