所以我轉換我的數據幀到as.matrix(DF):矩陣不被視爲數字ř
m<-as.matrix(df)
但隨後:
> is.numeric(m)
[1] FALSE
我甚至試圖查看某個單一因素在矩陣中是數字:
> is.numeric(m[15,15])
[1] FALSE
任何其他人都發生過這種情況?
所以我轉換我的數據幀到as.matrix(DF):矩陣不被視爲數字ř
m<-as.matrix(df)
但隨後:
> is.numeric(m)
[1] FALSE
我甚至試圖查看某個單一因素在矩陣中是數字:
> is.numeric(m[15,15])
[1] FALSE
任何其他人都發生過這種情況?
使用
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
啊,R
數據類型的樂趣。
R
中的矩陣具有twp特殊屬性:每列必須具有相同的長度,並且每個元素必須具有相同的數據類型。所以你可以有一個字符矩陣或者一個數字矩陣,但是你不能同時擁有一個矩陣。
現在,假設您有一個數據框df
,其中有兩列A
和B
。 A
有字符,B
有數字。這對於數據幀來說很好。但現在你做的事:
m <- as.matrix(df)
由於@Sven低於所指出的,矩陣的結果數據類型是基於最普遍的一個(字符>數字>整數>邏輯)。 R
將迫使其他所有數據類型在m
。它不會警告你(除非脅迫造成NA's
,這是可能的)。
矩陣的結果數據類型不是基於第一種數據類型,而是基於最常用的數據類型(字符>數字>整數>邏輯)。 –
@SvenHohenstein - 謝謝。我編輯了我的回覆。 – jlhoward
m <-as.numeric(m)給出了我原始矩陣中所有值的列表。沒有那麼有用。 –
@TomA,你是對的。請參閱上面的編輯 –
我明白了,但你的方法也適用。感謝編輯! –