为何含多类型元素的向量经class()检测为character类型?
R向量类型统一的原因解释
先看你给出的代码:
## b. x <- 4 y <- TRUE z <- "Mort" ## c. k <- c(x,z) i <- c(x,y,z) ## d. class(k) class(i)
运行后k和i的类型都是character,核心原因是R的向量是「同质结构」——一个向量里只能存储同一种数据类型。
当你用c()把不同类型的元素拼接在一起时,R会自动执行类型转换,转换规则遵循「更严格→更宽松」的优先级:逻辑型 < 数值型 < 字符型。也就是说,只要向量里存在字符型元素,其他所有类型的元素都会被强制转换成字符型:
- 对于
k <- c(x,z):数值型的4会被转为字符"4",和原本的"Mort"共同组成字符向量。 - 对于
i <- c(x,y,z):先把逻辑型的TRUE转为数值1,接着1和4再一起转为字符"1"和"4",最终和"Mort"组成字符向量。
内容的提问来源于stack exchange,提问作者Crimsondragonlor
相关产品推荐
相关产品推荐

