R dataframe自定义类创建后select_if调用is.New报错问题问询
解决方案
报错原因
你为列设置自定义New类后,R不会自动生成对应的is.New()类判断函数,因此调用时会提示对象不存在。
可选解决方法
方法1:自定义判断函数后调用
先创建is.New类判断函数:
is.New <- function(x) { inherits(x, "New") }
之后运行你原有筛选代码即可得到预期结果:
library(dplyr) asd %>% select_if(is.New)
如果你使用的是dplyr 1.0.0及以上版本,更推荐使用官方推荐的where()语法替代已被逐步弃用的select_if:
asd %>% select(where(is.New))
方法2:直接用匿名函数筛选(无需额外定义函数)
如果不想单独创建判断函数,可以直接在筛选逻辑内通过匿名函数调用inherits判断类属性:
# select_if 写法 asd %>% select_if(~ inherits(.x, "New")) # 新版dplyr where写法 asd %>% select(where(~ inherits(.x, "New")))
运行结果
上述两种方法运行后均会返回你需要的输出:
b 1 D 2 S
内容的提问来源于stack exchange,提问作者user11740857
相关产品推荐
相关产品推荐

