[英]rbind/data.frame conversion type hierarchy R
谁能在使用rbind和data.frame时系统地向我解释字符/数字/因子之间类型转换的层次结构?
以我的理解, 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"
看一下?cbind
(或?rbind
)的Value部分:
“矩阵结果的类型由层次结构中原始的任何输入的最高类型确定<逻辑<整数<双<复数<字符<列表”
取决于层次结构的一些强制性示例:
# logical
a <- c(FALSE, TRUE)
# integer
b <- 0:1
# double
c <- c(0, 1.0)
# character
d <- c("0", "1")
m1 <- cbind(a, b)
m1
str(m1)
# logical converted to integer
m2 <- cbind(b, c)
m2
str(m2)
# integer converted to double
m3 <- cbind(c, d)
m3
str(m3)
# double converted to character
另请参见?cbind
“ 数据帧方法 ”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.