我遇到了一个我不明白的问题,到目前为止找不到解释。这是一个例子:
x = matrix(data = "test", nrow = 5, ncol = 3)
typeof(x[1, 1])
> "character"
x = as.data.frame(x)
typeof(x[1, 1])
> "integer"
为什么as.data.frame()
将数据强制转换为整数类型以及如何防止它发生?
答案 0 :(得分:2)
matrix
只能容纳一个班级。通常,我们将matrix
用于数字元素。假设matrix
中的单个元素是非数字的,它会将整个矩阵转换为character
类。
关于OP的帖子,我们有matrix
个character
个元素。将matrix
强制转换为data.frame
(使用as.data.frame
),它将转换为data.frame
,但stringsAsFactors=TRUE)
中的默认选项data.frame
每列中的字符元素将转换为factor
类。当我们使用typeof
时,我们会得到integer
factor
的{{1}}表示形式。
使用stringsAsFactors=FALSE
x1 <- as.data.frame(x, stringsAsFactors=FALSE)