我正在进行荟萃分析,需要分析多个主持人。 我正在使用rma.uni函数,并具有与我正在测试的所有主持人相同的代码:
res <- rma.uni(method = "HS", measure = "SMD", m1i = EXPM, m2i = CONM, sd1i = EXPSD, sd2i = CONSD, n1i = EXPN, n2i = CONN, slab=paste(AUTHOR, YEAR, sep=", "), data = outcomeData)
我想添加参数“ mods =〜x”,其中x是我正在测试的主持人(例如YEAR或AUTHOR),然后对主持人的组合列表进行for循环。
我尝试了几种不同的方法,但是在解释错误消息时遇到了困难。
mod.test <- c("AUTHOR", "YEAR")
for (i in mod.test){
res <- rma.uni(method = "HS", measure = "SMD", m1i = EXPM, m2i = CONM, sd1i = EXPSD, sd2i = CONSD, n1i = EXPN, n2i = CONN, slab=paste(AUTHOR, YEAR, sep=", "), mods = ~ i, data = outcomeData)
print(res)
}
和
mod.test <- c("AUTHOR", "YEAR")
for (x in mod.test){
i <- paste("mods = ~ ", x)
res <- rma.uni(method = "HS", measure = "SMD", m1i = EXPM, m2i = CONM, sd1i = EXPSD, sd2i = CONSD, n1i = EXPN, n2i = CONN, slab=paste(AUTHOR, YEAR, sep=", "), mods = ~ i, data = outcomeData)
print(res)
}
都给出错误:
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
感谢您的帮助。
答案 0 :(得分:0)
由于我不知道您使用的数据集,所以我改用了基础数据。
您需要使用直接索引而不是提供名称。根据您的情况,请在循环内尝试outcomeData[[i]]
。由于您数据中的列名与您的不匹配,我对您的模型进行了一些更改。
mod.test <- c("author", "year")
for (i in mod.test){
print(i)
res <- rma.uni(method = "HS", measure = "SMD",
m1i = ablat, m2i = ablat, sd1i = ablat, sd2i = ablat,
n1i = ablat, n2i = ablat,
slab=paste(author, year, sep=", "),mods= ~dat.bcg[[i]],data = dat.bcg)
print(res)
}
因此,请尝试此操作。
mod.test <- c("AUTHOR", "YEAR")
for (i in mod.test){
res <- rma.uni(method = "HS", measure = "SMD", m1i = EXPM,
m2i = CONM, sd1i = EXPSD, sd2i = CONSD,
n1i = EXPN, n2i = CONN, slab=paste(AUTHOR, YEAR, sep=", "),
mods = ~outcomeData[[i]], data = outcomeData)
print(res)
}
您可以在this问题中找到有关此信息的更多信息。
答案 1 :(得分:0)
我做了Maydin的建议,这是我的固定代码。
mod.test <-c(“ YEAR”,“ TASK”)
for (i in mod.test){
res <- rma.uni(method = "HS", measure = "SMD",
m1i = EXPM, m2i = CONM, sd1i = EXPSD,
sd2i = CONSD, n1i = EXPN, n2i = CONN,
slab=paste(AUTHOR, YEAR, sep=", "),
mods = ~outcomeData[[i]],
data = outcomeData)
print(i)
print(res)
一个困难是我使用“ AUTHOR”作为测试主持人,但这会导致错误:
Error in rma.uni(method = "HS", measure = "SMD", m1i = EXPM, m2i = CONM, :
Number of parameters to be estimated is larger than the number of observations.
In addition: Warning message:
In rma.uni(method = "HS", measure = "SMD", m1i = EXPM, m2i = CONM, :
Redundant predictors dropped from the model.
我认为是因为每个研究在我的示例数据集中都有一位独特的作者。