如何在 lmer for 循环中使可变权重动态化

How do I make variable weights dynamic in lmer for loop

我希望能够输入我将在 lmer 函数的“权重”选项中使用的变量名称。这样我就可以更改数据集,循环遍历“权重”并提取正确的变量。

我想在 for 循环中提取正确的权重列。 所以对于 y,等式将是: lmer(y~x+(1|study), 权重 = weight.var) 和 y1: lmer(y1~x+(1|study),权重=weight.var1) 所以我将权重变量命名为 (weight.opt),然后想在 for 循环内的公式中使用它们。我可以使用“as.formula”使公式起作用并连接到数据集,但我不确定如何对权重做类似的事情。

x <- rnorm(300,0,1)
y <- x*rnorm(300,2,0.5)
y1 <- x*rnorm(300,0.1,0.1)
study <- rep(c("a","b","c"),each = 100)
weight.var <-  rep(c(0.5,2,4),each = 100)
weight.var1 <-  rep(c(0.1,.2,.15),each = 100)
library(lme4)
dataset <- data.frame(x,y,y1,study,weight.var,weight.var1)
resp1 <- c("y","y1")
weight.opt <- c("weight.var","weight.var1")
for(i in 1:2){
  lmer(as.formula(paste(resp1[i],"~x+(1|study)")),weights = weight.opt[i],data = dataset)
}

这似乎工作正常:

res_list <- list()
for(i in 1:2){
    res_list[[i]] <- lmer(as.formula(paste(resp1[i],"~x+(1|study)")),
         weights = dataset[[weight.opt[i]]],data = dataset)
}