将矩阵从char转换为num而不损失结构?

时间:2018-10-11 16:14:59

标签: r

我正在尝试将具有46列和28行的矩阵转换为num,如下所示:

 chr [1:28, 1:46] "12.96720" "10.31482" "10.61680" "11.13120" 
"10.48705" " 9.525684" " 9.942551" ...
 - attr(*, "dimnames")=List of 2
 ..$ : chr [1:28] "BPWG " "BWBG" "GGGW" "GGPB" ...
 ..$ : NULL

但是,到目前为止,当我这样做时,矩阵会失去所有形状,并且基本上我会得到一个列表。我尝试过:

lapply(ggg2,function(x) as.numeric(as.character(x)))

如何转换它以保留46列和28行?

谢谢

1 个答案:

答案 0 :(得分:2)

matrix是具有暗淡属性的vector。因此,我们可以直接更改class

class(gg2) <- "numeric"
gg2
#      [,1] [,2]
#BPG  12.96  1.5
#BWG  10.31  1.6
#BWBG 10.41 18.0

lapply的问题在于它遍历每个单元。对于data.frame,单位是一列,而对于vector/matrix,单位是一个观察值

数据

gg2 <- matrix(c("12.96", "10.31", "10.41", "1.5", "1.6", "18"), 
     dimnames = list(c("BPG", "BWG", "BWBG"), NULL), 3, 2)