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

在R中使用mean()函数遇报错问题求助

问题原因与解决方法

你遇到的报错argument is not numeric or logical: returning NA,核心原因是管道符%>%会把左侧的整个数据框传递给右侧的mean()函数——而mean()默认只能处理数值/逻辑向量,没法直接对整个数据框计算均值,所以才会抛出错误。

你能运行的代码data %>% filter(Sex == "M") %>% summarise(mean(weight))之所以正常,是因为summarise()会自动从数据框中提取指定列(weight)生成向量,再传给mean()计算。

针对你那两段无法运行的代码,给出修正方案:

1. 修正data %>% filter(Sex == "M") %>% mean(weight)

有两种常用写法:

  • 用pull()提取weight列的向量后计算均值:
    data %>% filter(Sex == "M") %>% pull(weight) %>% mean()
    
  • 延续你熟悉的summarise()写法(还能自定义结果列名):
    data %>% filter(Sex == "M") %>% summarise(mean_male_weight = mean(weight))
    

2. 修正data %>% mean(weight)

同理,两种可行方式:

  • 提取列后计算:
    data %>% pull(weight) %>% mean()
    
  • 用summarise()统一处理:
    data %>% summarise(overall_mean_weight = mean(weight))
    

额外提示

如果weight列存在缺失值(NA),可以在mean()里添加na.rm = TRUE参数忽略缺失值,避免计算结果返回NA:

data %>% pull(weight) %>% mean(na.rm = TRUE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:20:28