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

使用psych包histBy()时数值变量报“x must be numeric”错误

解决psych包histBy()报错“'x' must be numeric”的方案

1. 换用直接传参的调用方式

histBy()的公式格式有时会因数据集的隐性属性出问题,直接传入数值向量和分组向量更稳妥:

library(psych)
histBy(anova1$minutes, group = anova1$group)

2. 彻底排查变量类型

别只凭直觉转换类型,先明确变量的实际类型:

  • 检查minutes的类型:
class(anova1$minutes)

必须返回"numeric"或"integer",如果是其他类型,强制转换:

anova1$minutes <- as.numeric(anova1$minutes)
  • 检查group的类型:
class(anova1$group)

可以是"factor"或"character",如果是数值型分组,转成因子避免混淆:

anova1$group <- as.factor(anova1$group)

3. 清理数据集的隐性问题

有些看似数值的变量可能藏着字符格式(比如带空格),强制转换一次:

anova1$minutes <- as.numeric(as.character(anova1$minutes))

再确认没有隐藏的缺失值(哪怕你说过无缺失,再验证一遍):

sum(is.na(anova1))

结果必须是0。

4. 用内置数据集验证函数是否正常

如果以上步骤都没用,先测试函数本身是否能运行,排除包或环境问题:

data(iris)
histBy(Sepal.Length ~ Species, data = iris)

如果这个例子能出图,说明你的数据集有特殊情况,对比iris数据集和你的anova1数据集的变量属性差异,逐步定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 14:49:52