如何将“字符串数字”列转换为R矩阵中的纯数字

时间:2013-11-29 05:54:21

标签: r

提供以下数据:

      GOBPID                    Term     col1 col2 col3 col4 col5
1 GO:0001659 temperature_homeostasis 3.496906    0    0    0    0
2 GO:0001660        fever_generation 3.226069    0    0    0    0

我尝试创建一个矩阵,其中col1-5(可能大于5)为数字。

目前它看起来像这样:

> dat <- read.table("http://dpaste.com/1486837/plain/",header=TRUE)
> as.matrix(as.numeric(dat))

    GOBPID       Term                      col1       col2 col3 col4 col5
[1,] "GO:0001659" "temperature_homeostasis" "3.496906" "0"  "0"  "0"  "0" 
[2,] "GO:0001660" "fever_generation"        "3.226069" "0"  "0"  "0"  "0" 

这样做的方法是什么?

我打算这样做:

          GOBPID                      Term      col1 col2 col3 col4 col5
[1,] "GO:0001659" "temperature_homeostasis" 3.496906    0    0    0    0 
[2,] "GO:0001660" "fever_generation"        3.226069    0    0    0    0

使用此命令我失败了:as.numeric(as.matrix(dat))

1 个答案:

答案 0 :(得分:3)

datdata.frame,而不是matrixdata.frame的列可以有不同的类型。在您的示例中,col1-5的类型已经是数字。亲自尝试一下:

> dat <- read.table("http://dpaste.com/1486837/plain/",header=TRUE)
> sapply(dat, class)
   GOBPID      Term      col1      col2      col3      col4      col5 
 "factor"  "factor" "numeric" "integer" "integer" "integer" "integer" 
> dat[,3] + 1
[1] 4.496906 4.226069
> dat[,4] + 1
[1] 1 1