这是什么意思? “错误:`rhs`必须是语言对象”

时间:2016-11-03 23:17:15

标签: r

这个错误是什么意思?

  

错误:rhs必须是语言对象

我无法真正向您展示与代码相关联的文本文件,但如果有帮助,这就是错误:

t.test(BILL1~SEX, Credit, conf.level=0.95,
 mu = 0, paired=F,alternative = "two.sided",var.equal=F)

1 个答案:

答案 0 :(得分:3)

tl; dr mosaic::t.test函数未处理第二个未命名的参数,正如基于stats::t.test ...

我的Google搜索错误消息shows that this error only shows up in the lazyeval and mosaic packages。进一步探讨显示mosaichas a t.test() function掩盖了基础R中出现的stats::t.test()函数。

所以问题很可能与该功能有关,但没有更多信息,我们只能推测。我尝试了各种方法来打破mosaic::t.test()(使用在数据中找不到的变量名,使用与函数对应的符号而不是数据对象等等),但可以&# 39;引发错误。您是否至少可以编辑您的问题以包含str(Credit) ... ??

的结果

好的,我设法猜到了,而且你的数据实际上没有任何问题(我认为)。

dd <- data.frame(x=1:10,y=rep(0:1,each=5))
stats::t.test(x~y,dd)   ## works fine
library(mosaic)
mosaic::t.test(x~y,Credit)
## Error: `rhs` must be a language object

现在我们唯一的变化是名称 data=参数*:

mosaic::t.test(x~y,data=Credit)  ## works fine

问题是stats::t.test的定义是

t.test(formula, data, subset, na.action, ...)

mosaic::t.test

 t.test(x, y=NULL, ..., data = parent.frame())

以便mosaic::t.test解释第二个参数,如果它是未命名的,作为公式......