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

R语言函数入参为NA时如何忽略对应过滤条件计算子集均值

修改方案

你只需要调整filter内的判断逻辑,给每个过滤条件增加参数是否为NA的判断:当对应参数为NA时,该条件返回TRUE,等同于跳过该维度的过滤。
修改后的完整函数代码如下:

my_subset_mean <- function(r1, r2, r3){  
  subset <- df %>% 
    filter(
      # r1为NA时跳过a列过滤
      is.na(r1) | a %in% r1,
      # r2为NA时跳过b列过滤
      is.na(r2) | b > r2,
      # r3为NA时跳过d列过滤
      is.na(r3) | d < r3
    )
  # 加na.rm=TRUE可以避免子集为空/存在NA时返回NaN,不需要可以去掉
  return(mean(subset$c, na.rm = TRUE))
}

效果验证

你给出的3个调用示例都可以正常运行得到对应结果:

  • 示例1:忽略a列过滤,仅筛选b > 5且d < 1的行计算c列均值
  • 示例2:忽略b列过滤,仅筛选a %in% c("a","b")且d < 1的行计算c列均值
  • 示例3:忽略a、d列过滤,仅筛选b >5的行计算c列均值

内容的提问来源于stack exchange,提问作者stats_noob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:24:03