2013-12-07 27 views
4

所以我轉換我的數據幀到as.matrix(DF):矩陣不被視爲數字ř

m<-as.matrix(df) 

但隨後:

> is.numeric(m) 
[1] FALSE 

我甚至試圖查看某個單一因素在矩陣中是數字:

> is.numeric(m[15,15]) 
[1] FALSE 

任何其他人都發生過這種情況?

回答

3

使用

dims <- dim(m) 
m <- as.numeric(m) 
dim(m) <- dims  

可能要包裹上面的函數


as.matrix不會任意data.frame必然轉換爲數值。
如:

x <- data.frame(LETTERS) 
m <- as.matrix(x) 
is.numeric(x) 
# [1] FALSE 
is.character(x) 
# [1] TRUE 
+0

m <-as.numeric(m)給出了我原始矩陣中所有值的列表。沒有那麼有用。 –

+0

@TomA,你是對的。請參閱上面的編輯 –

+0

我明白了,但你的方法也適用。感謝編輯! –

1

啊,R數據類型的樂趣。

R中的矩陣具有twp特殊屬性:每列必須具有相同的長度,並且每個元素必須具有相同的數據類型。所以你可以有一個字符矩陣或者一個數字矩陣,但是你不能同時擁有一個矩陣。

現在,假設您有一個數據框df,其中有兩列ABA有字符,B有數字。這對於數據幀來說很好。但現在你做的事:

m <- as.matrix(df) 

由於@Sven低於所指出的,矩陣的結果數據類型是基於最普遍的一個(字符>數字>整數>邏輯)。 R將迫使其他所有數據類型在m。它不會警告你(除非脅迫造成NA's,這是可能的)。

+3

矩陣的結果數據類型不是基於第一種數據類型,而是基於最常用的數據類型(字符>數字>整數>邏輯)。 –

+1

@SvenHohenstein - 謝謝。我編輯了我的回覆。 – jlhoward