lmer gives error: `assignment of an object of class "numeric" is not valid for @'Dim' in an object of class "dgTMatrix"`

lmer gives error: `assignment of an object of class "numeric" is not valid for @'Dim' in an object of class "dgTMatrix"`

在使用 lme4::lmer 拟合混合效应模型时,我遇到了以下错误:

Error in (function (cl, name, valueClass) : assignment of an object of class "numeric" is not valid for @'Dim' in an object of class "dgTMatrix"; is(value, "integer") is not TRUE

我执行了 google 搜索,但没有找到包含整个错误消息的结果。我终于通过将我的代码恢复到它可以工作的状态来找出原因。我在下面提供了一个答案和决议。

从报错信息来看,很难判断原因,但很容易发生错误,我把错误原因记录在这里,以备日后参考。

错误发生在以下代码中:

library(lme4)
data(sleepstudy)
fm1 <- lmer(Reaction ~ Days + (0 | Subject), data = sleepstudy)

原来错误的来源只是一个拼写错误,这是由于之前摆弄模型造成的。

要包含一个 "simple" 随机变量(它直接影响因变量而不是其他固定效应之一),必须写 (1 | U) 其中 U 是列包含随机变量实现的数据集。是不是(0 | U)像题里不小心写的那样。

所以问题的示例代码必须是:

fm1 <- lmer(Reaction ~ Days + (1 | Subject), data = sleepstudy)