Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用effects包循环glmer函数时出现意外错误_R_Model_Lapply_Lme4 - Fatal编程技术网

使用effects包循环glmer函数时出现意外错误

使用effects包循环glmer函数时出现意外错误,r,model,lapply,lme4,R,Model,Lapply,Lme4,我试图将包中的effect函数与包中的(gl)merMod对象一起通过lappy循环传递,但遇到了一个我预料不到的错误。effect函数似乎无法在循环中查找对象我做错了什么?如何在不将数据框手动放入工作区的情况下使循环正常工作? library(lme4) library(reshape2) library(effects) dat <- data.frame(var = rep(c("A", "B", "C"), 100), treat = rep(c("T1", "T2"), eac

我试图将包中的
effect
函数与包中的
(gl)merMod
对象一起通过
lappy
循环传递,但遇到了一个我预料不到的错误。
effect
函数似乎无法在循环中查找对象我做错了什么?如何在不将数据框手动放入工作区的情况下使循环正常工作?

library(lme4)
library(reshape2)
library(effects)

dat <- data.frame(var = rep(c("A", "B", "C"), 100), treat = rep(c("T1", "T2"),
each = 150), rand =  rep(c("B", "C", "A"), 100), value = rep(c(1,0), 150))

lapply(levels(dat$treat), function(k) {
  y <- subset(dat, treat == k)
  mod <- glmer(value ~ var + (1|rand), data = y, family = binomial)
  })
## Works

lapply(levels(dat$treat), function(k) {
  y <- subset(dat, treat == k)
  mod <- glmer(value ~ var + (1|rand), data = y, family = binomial)
  effects::effect("var", mod)
})
## Error in is.data.frame(data) : object 'y' not found

y <- subset(dat, treat == "T1")
mod <- glmer(value ~ var + (1|rand), data = y, family = binomial)
effects::effect("var", mod)
## Works

lapply(levels(dat$treat), function(k) {
  y <- subset(dat, treat == k)
  mod <- glmer(value ~ var + (1|rand), data = y, family = binomial)
  effects::effect("var", mod)
})
## Works, because object y is in the workspace
库(lme4)
图书馆(E2)
图书馆(效果)
dat我有一个类似的问题(将lm与model.matrix一起使用),在这个问题上,效果本身工作得很好,但在我的lappy循环中却不起作用

我尝试用for循环重写代码,解决了我的问题。由于for循环每次都将对象指定给全局环境,因此不必手动将它们放置在那里

在您的示例中,for循环不会引发错误,尽管现在您需要将输出分配给以下内容:

for(k in levels(dat$treat)) {
  y <- subset(dat, treat == k)
  mod <- glmer(value ~ var + (1|rand), data = y, family = binomial)
  effects::effect("var", mod)
  }
for(k级(dat$treat)){

这显然不是解决方案,但使用glm()模型对我很有效:
lappy(levels(dat$treat),function(k){y@maller谢谢!这是一个
lme4
问题……我编辑了我的问题。顺便说一句,
lappy(levels(dat$treat),function(k){y您可能想查看,但我无法找到解释如果您尝试在函数中使用
效果
,则会发生类似错误。对于这种特殊情况,替换deparse技巧似乎可以解决问题。但是,对于此示例不起作用。