首页 > 解决方案 > 强制隐式转换为最通用的共享类?

问题描述

是否有一个函数可以将隐式转换规则强制到异构列表中,以便将其转换为最通用共享类的原子向量?例如,如果我有list("apple", 12, TRUE),我怎么能把它变成c("apple", "12", "TRUE")

标签: rlist

解决方案


R 的类层次结构大致是逻辑 < 因子 < 整数 < 数字 < 字符。因此unlist,强制转换为字符应该有所帮助,然后list再次获取列表格式。

list(unlist(list("apple", 12, TRUE)))
# [[1]]
# [1] "apple" "12"    "TRUE" 

如果我们有一个嵌套列表,我们可以创建一个"relistable"继承自"list"并使用relistafter的对象unlist

l <- as.relistable(list("apple", list(12), TRUE))
relist(unlist(l))
# [[1]]
# [1] "apple"
# 
# [[2]]
# [[2]][[1]]
# [1] "12"
# 
# 
# [[3]]
# [1] "TRUE"

推荐阅读