任何人都可以系统地向我解释使用rbind和data.frame时字符/数字/因子之间的类型转换的层次结构吗?rbind/data.frame转换类型层次结构R
在我的理解中,rbind
放在一个矩阵中,它只能有一个类型。所以如果存在类型冲突,那么将转换为什么类型?其他类型的矩阵创建功能(例如cbind
,matrix
)是否以相同的方式工作?例如:
> sapply(rbind("a", "b"), class)
a b
"character" "character"
> sapply(rbind(1, "b"), class)
1 b
"character" "character"
在另一方面,数据帧可以容纳多种类型的,所以data.frame
保留原始类型,除了它总是试图字符转换为的因素。 (这是否正确?这对我来说是非常直观的。)
使用相同的逻辑,它是否正确,因素类型将始终保持因子,无论它是否为factor(c(1,2))
或factor(c("a", "b"))
?
> sapply(data.frame("a", "b"), class)
X.a. X.b.
"factor" "factor"
> sapply(data.frame(1, "b"), class)
X1 X.b.
"numeric" "factor"
> sapply(data.frame(1, factor("a")), class)
X1 factor..a..
"numeric" "factor"
在'data.frame'或您的全局选项中看到'stringsAsFactors'参数。 – Justin
我知道有这样的事情。我要求系统地解释什么类型在转换中具有优先权。 – Heisenberg