在r中将字符串转换为数字矩阵

时间:2017-11-14 07:33:52

标签: r string matrix numeric data-conversion

我是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

请建议我如何解决这个问题?动机是在将新列添加到现有数值矩阵之后,使列名完整的数字矩阵。

1 个答案:

答案 0 :(得分:0)

使用定义的colClasses

读取您的数据
data_mat <- read.table(path.to.data, header = TRUE, colClasses = "numeric")

这可确保您的数据为numeric,并且您可以使用cbind按照您的方式添加更多列。 couse datam也需要数字。作为副作用,定义colClasses也会加速阅读过程。