以编程方式将新变量添加到数据帧

luc*_*ano 5 r dataframe

我已经实现了这个混合效果模型:

mtcarsSub <- mtcars[,c("wt", "drat", "cyl")]
library(lme4)
mtcarsME <- lmer(drat ~ (1|cyl) + wt, data=mtcarsSub)
Run Code Online (Sandbox Code Playgroud)

我现在想要从模型中添加预测mtcarsSub.我可以添加这些像这样的新变量:

mtcarsSub$fixed.effect <- predict(mtcarsME)
mtcarsSub$random.effect.cyl4 <- mtcarsMEFixed + ranef(mtcarsME)$cyl["4",]
mtcarsSub$random.effect.cyl6 <- mtcarsMEFixed + ranef(mtcarsME)$cyl["6",]
mtcarsSub$random.effect.cyl8 <- mtcarsMEFixed + ranef(mtcarsME)$cyl["8",]
Run Code Online (Sandbox Code Playgroud)

请注意,当从随机效果添加预测时mtcarsSub,我重复自己3次.如何以编程方式添加随机效果的预测,可能使用函数并且可能在一行中?

Bea*_*eld 10

像这样:

for( i in c(4,6,8) ) {
  mtcars[[ paste0("random.effect.cyl", i) ]] <- mtcarsMEFixed + ranef(mtcarsME)$cyl[as.character(i),]
}
Run Code Online (Sandbox Code Playgroud)

看一下 ? "[[<-"

  • 对于懒惰,`[[`indexing允许你传递字符串而```不能.所以`foo [['bar']]`相当于`foo $ bar`.在一个有些不相关但有趣的注释中,```索引不保留名称,而`[[`和`$`do. (2认同)