【发布时间】:2016-01-22 06:18:30
【问题描述】:
下面的代码包含一个显示我的问题的简化示例。不是那么简单,但我不想删除太多的上下文。
当我使用 as.formula() 创建公式并尝试使用该公式来拟合模型以乘以估算数据时,我得到“eval(expr, envir, enclos) 中的错误:找不到对象'结果'” .当我在建模语句(最后一行)中明确列出公式时,没问题。此外,如果我在单个数据集的分析中引用该公式(即,不需要'with'),也没有问题。问题似乎很明显,该公式是在全局环境中创建的,而我需要它在数据框中查找命名变量。我只是不太了解 R 环境,无法弄清楚如何解决这个问题。
我在几个场景下使用一组更复杂的模型在模拟中应用此代码,因此如果我要高效地对这些模拟进行编程,我下面的最后一行代码并不是一个真正的选择。
感谢您的建议!
library(MASS)
library(mitools)
library(lme4)
#Generate 3 small datasets to emulate multiply imputed data
Sigma <- matrix(c(1, 0.5, -0.7, -0.4, -0.4,
0.5, 1, -0.4, -0.2, -0.2,
-0.7, -0.4, 1, 0.5, 0.4,
-0.4, -0.2, 0.5, 1, 0.6,
-0.4, -0.2, 0.4, 0.6, 1),5,5)
complete <- as.list(1:3)
for (i in 1:3){
complete[[i]] <- as.data.frame(mvrnorm(n = 10, mu=c(0,0,0,0,0), Sigma=Sigma))
}
#Convert to longitudinal analysis format and imputationList object type
all.long <- imputationList(lapply(complete, reshape, varying=c("V3", "V4", "V5"), direction="long",
v.names="outcome", times=c(0,2,4)))
current.formula <-formula(outcome ~ 1 + time + (1 | id) + (0 + time | id) + V1 + V2)
#This does not work:
imp.fit <- with(data=all.long, lmer(current.formula, REML=TRUE))
# Error in eval(expr, envir, enclos) : object 'outcome' not found
# This does work:
imp.fit <- with(all.long, lmer(outcome ~ 1 + time + (1 | id) + (0 + time | id) + V1 + V2, REML=TRUE))
【问题讨论】:
标签: r