矩阵不被视为数字R.

时间:2013-12-07 22:07:17

标签: r matrix dataframe

所以我将数据框转换为as.matrix(df):

m<-as.matrix(df)

但是:

> is.numeric(m)
[1] FALSE

我甚至试图查看矩阵中的某个因素是否为数字:

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

其他人有过这种情况吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

啊,R数据类型的乐趣。

R中的矩阵具有twp特殊属性:每列必须具有相同的长度,并且每个元素必须具有相同的数据类型。所以你可以有一个字符矩阵或一个数字矩阵,但你不能有两个矩阵。

现在,假设您有一个数据框df,其中包含两列ABA包含字符,B包含数字。这适用于数据帧。但现在你做了:

 m <- as.matrix(df)

正如@Sven在下面指出的那样,矩阵的结果数据类型基于最一般的数据类型(字符&gt;数字&gt;整数&gt;逻辑)。 R会在m中将所有其他内容强制转换为该数据类型。它不会警告你(除非强制创造NA's,这是可能的)。