所以我将数据框转换为as.matrix(df):
m<-as.matrix(df)
但是:
> is.numeric(m)
[1] FALSE
我甚至试图查看矩阵中的某个因素是否为数字:
> is.numeric(m[15,15])
[1] FALSE
其他人有过这种情况吗?
答案 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
,其中包含两列A
和B
。 A
包含字符,B
包含数字。这适用于数据帧。但现在你做了:
m <- as.matrix(df)
正如@Sven在下面指出的那样,矩阵的结果数据类型基于最一般的数据类型(字符&gt;数字&gt;整数&gt;逻辑)。 R
会在m
中将所有其他内容强制转换为该数据类型。它不会警告你(除非强制创造NA's
,这是可能的)。