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

R语言管道符(%>%)使用报错:mean函数提示参数非数值型?

问题原因与解决方法

你遇到的问题是管道符%>%的参数传递逻辑导致的:

  • 管道符默认会把左侧的对象(这里是整个数据框b_2021_01)作为右侧函数的第一个参数传入。
  • 你写的b_2021_01 %>% mean(Day.of.week, na.rm=T)等价于mean(b_2021_01, Day.of.week, na.rm=T),这时候mean会尝试对整个数据框计算均值,而数据框不是数值/逻辑类型,自然触发警告;同时Day.of.week被错误地当成了mean函数的第二个参数trim(用于指定要修剪的首尾比例),完全偏离了你要提取列的意图。

几种正确的写法

方法1:用pull提取列后计算均值(需加载dplyr包)

library(dplyr)
b_2021_01 %>% pull(Day.of.week) %>% mean(na.rm = T)

方法2:用大括号明确指定参数来源

b_2021_01 %>% {mean(.$Day.of.week, na.rm = T)}

大括号会改变管道的默认行为,让你可以手动用.$引用左侧的对象,从而正确提取列。

方法3:直接在管道里用$提取列

b_2021_01 %>% mean(.$Day.of.week, na.rm = T)

方法4:用dplyr的summarize生成汇总结果

如果需要保留数据框格式的结果,可以用:

library(dplyr)
b_2021_01 %>% summarize(mean_day_of_week = mean(Day.of.week, na.rm = T))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 08:45:34