R语言调用mean()函数报错“Argument is not numeric or logical: returning NA”求助
解决
mean()函数报错:Argument is not numeric or logical: returning NA 嘿,别担心,这个问题对R新手来说超常见!我来给你掰扯清楚:
为什么会报错?
你从Excel导入的Ejercicio_2_4其实是一个数据框(data frame)——这是R里用来存表格数据的格式,哪怕只有一列也是数据框。而mean()函数只能直接处理单个的数值向量(就是一列纯数字的集合),直接扔给它整个数据框,它就不知道该怎么算了,所以会返回NA报错。
至于summary()能正常用,是因为这个函数本来就是专门为数据框设计的,它会自动汇总数据框里每一列的统计信息~
简单解决方法(选一种就行)
我给你几个超简单的操作,随便挑一个都能解决:
- 方法1:直接指定列名
假设你Excel里的表头叫数值(换成你实际的表头名字就行),用美元符号$提取这一列的数值向量:
如果记不住列名,也可以用位置索引(因为你只有一列,所以是第1列):mean(Ejercicio_2_4$数值)mean(Ejercicio_2_4[[1]]) - 方法2:把数据框转成向量
用unlist()函数把数据框拆成单个向量,再算均值:mean(unlist(Ejercicio_2_4)) - 方法3:用tidyverse工具(可选)
如果你以后经常用R处理数据,可以试试dplyr包的pull()函数,先安装加载包(只需要做一次):
然后提取列计算均值:install.packages("dplyr") library(dplyr)mean(pull(Ejercicio_2_4))
小验证技巧
你可以先确认一下数据类型,避免踩坑:
- 输入
class(Ejercicio_2_4),如果输出是"data.frame",就说明确实是数据框; - 输入
class(Ejercicio_2_4$你的列名),确保输出是"numeric",这样就肯定能算出均值啦!
内容的提问来源于stack exchange,提问作者Luisa Reyes
相关产品推荐
相关产品推荐

