【发布时间】:2018-11-01 13:19:00
【问题描述】:
我正在调用 lme4 包中的 lmer 函数。如果我对列名进行硬编码,该函数将起作用。但是,如果我将其称为变量,则会引发错误。我的最终目标是在每个列名之间调用一个包含“+”的字符串。
这是一个lmer 调用示例:
colnames(df)
COL_A, COL_B, COL_D
这行得通:
output <- lmer(COL_A ~ 1 + COL_B + 1|COL_D, df, REML = FALSE, verbose = TRUE)
这不是:
var_a <- COL_A
var_b <- COL_B
var_c <- COL_D
output <- lmer(var_a ~ 1 + var_b + 1|var_c, df, REML = FALSE, verbose = TRUE)
出现的错误:
Error in model.frame.default(data = df, drop.unused.levels = TRUE, :
variable lengths differ (found for 'var_b')
如果能解决这个问题,那就太棒了。
虽然我的最终目标是将函数作为字符串调用,所以如下所示:
form_lmer<-"COL_A ~ 1 + COL_B + 1|COL_D"
output <- lmer(form_lmer, df, REML = FALSE, verbose = TRUE)
有没有人遇到过这种事情?
【问题讨论】:
-
this 有帮助吗?
-
output <- lmer(as.formula(form_lmer), df, REML = FALSE, verbose = TRUE)? -
您的意思是
var_a <- "COL_B"或var_a <- df$COL_B还是别的什么?var_a <- COL_B仅在您的全局环境中已经存在COL_B变量时才有效... -
顺便说一句,您的最终规范(以
form_lmer表示)确实有效,尽管我不推荐它... -
@BenBolker 为什么?