You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 00:39:02