2013-11-29 58 views
1

給予以下數據轉換:如何將「串的數值」列到純數字在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))

+2

「矩陣」只能包含一種類型的數據,因爲它實質上是一個具有維度的向量。如果你想在同一個對象中同時使用字符串和數字數據,你就會遇到'data.frame'或'list'。我也不知道你是如何設法讓as.matrix(as.numeric(dat))'給你一個結果應用到'data.frame' - 它對我來說是錯誤的。 – thelatemail

回答

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