如何强制异质列表按隐式转换规则转为最通用共享类原子向量
解答
R本身就内置了符合需求的功能,不需要额外自定义函数:
- 最简便的方法是直接调用基础包的
unlist()函数,它默认会遵循R的隐式类型提升规则,将异质列表的所有元素转换为优先级最高的共享类型,最终输出一维原子向量。
针对你的示例直接运行代码:unlist(list("apple", 12, TRUE))
得到的结果和你预期的c("apple", "12", "TRUE")完全一致。 - 如果你想要更明确的控制输出类型,避免隐式转换出现预期外的结果,也可以主动指定转换类型:
比如确定要输出字符向量时,可以运行sapply(list("apple", 12, TRUE), as.character),结果和unlist()的运行结果一致。
R的隐式类型提升优先级为 逻辑型 < 整型 < 双精度浮点型 < 字符型,所有元素都会自动向上转换为优先级最高的元素所属的类型,你给出的示例中最高优先级的元素是字符串,所以最终输出字符向量。
内容的提问来源于stack exchange,提问作者bcarlsen
相关产品推荐
相关产品推荐

