我正在尝试predict
为 lme4 的lmer
模型编写样式函数。这个想法是预测函数将在包含因子和变量级别的数据帧上工作,这种数据帧由以下产生expand.grid
:
level_df <- expand.grid(a=1:3, b=4:6)
我现在可以得到将给定效果/交互计算为字符串的公式:
formula_string <- "a * b + 3"
但是,我能够将该公式应用于级别数据框的唯一方法(在这种情况下,评估 and 的每个值的公式a
)是通过一些非常自由且可能危险的使用和b
之类的东西:assign
eval
EffectFunction <- function(df_row, formula_string) {
l_cols <- colnames(df_row)
for (i in 1:ncol(df_row)) {
assign(l_cols[i], df_row[1, i])
}
parsed <- parse(text=formula_string)
df_row$effect_val <- eval(parsed)
return(df_row)
}
pred_results <- adply(
level_df,
1,
formula_string=formula_string,
EffectFunction
)
是否有更安全、更快捷的方式在字符串和符号/变量名之间进行转换?