我希望通过混合效果模型循环一些自变量。有几个类似的问题,但没有什么对我有用。使用mtcars的示例:
fill
因此,对于我的'基本'模型,我现在希望通过模型迭代运行xnam2中的每个变量作为固定效果,但不能使用lapply和paste方法:
data(mtcars)
mtcars <- mtcars
t <- as.data.frame(seq(from = 10, to = 1000, by = 100))
names(t)[1] <- "return"
t <- as.data.frame(t(t))
#create some new variables to loop through
new <- cbind(mtcars$drat, t)
new2 <- 1-exp(-mtcars$drat/new[, 2:10])
new3 <- cbind(mtcars, new2)
xnam <- paste(colnames(mtcars)[c(3:4)], sep="")
xnam2 <- paste(colnames(reference)[c(12:20)], sep="")
#basic model (works fine)
fmla <- paste(xnam, collapse= "+")
fla <- paste("cyl ~", paste(fmla))
f <- paste0(paste(fla), " +(carb|gear)")
mtcarsmodel <- lmer(f, data= mtcars)
mtcarsmodel
所以我想要的是cyl~disp + hp +循环变量+(carb | gear)。
希望我能够完成的目标很明确。我对多个贴片感到有些困惑,但似乎是处理许多变量的最佳方法。有什么建议吗?
答案 0 :(得分:2)
如果我理解了您的问题,我认为您可以使用// Sorting the list based on values
Collections.sort(list, new Comparator<Entry<String, Integer>>() {
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2)
{
return o2.getValue().compareTo(o1.getValue());
}
});
// Maintaining insertion order with the help of LinkedList
Map<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
for (Entry<String, Integer> entry : list) {
sortedMap.put(entry.getKey(), entry.getValue());
}
创建模型公式,并使用paste
迭代每个新变量。
lapply
答案 1 :(得分:1)
@ eipi10解决方案的一个小变种:
library(lme4)
vars = names(mtcars)[c(1,5,6,7)]
otherVars <- c("disp","hp","(carb|gear)")
formList <- lapply(vars,function(x) {
reformulate(c(otherVars,x),response="cyl")
})
modList <- lapply(formList,lmer,data=mtcars)