提问人:Marius 提问时间:2/6/2013 更新时间:2/6/2013 访问量:93
Predict 样式函数:在字符串和符号之间转换
Predict-style function: converting between strings and symbols
问:
我正在尝试为 lme4 的模型编写一个样式函数。这个想法是,predict函数将在包含因子和变量水平的数据帧上工作,这些数据帧由以下方式产生:predict
lmer
expand.grid
level_df <- expand.grid(a=1:3, b=4:6)
我现在可以得到将给定效果/交互计算为字符串的公式:
formula_string <- "a * b + 3"
但是,我能够将该公式应用于级别数据帧的唯一方法(在本例中,评估 和 的每个值的公式)是通过一些非常自由且可能危险的东西使用,例如 和 :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
)
是否有更安全、更快捷的方法来在字符串和符号/变量名称之间进行转换?
答:
1赞
mnel
2/6/2013
#1
您可以使用 a 作为 envir 参数data.frame
eval
所以
eval(parse(text = formula_string), envir = level_df)
应该工作得很好,因为它会(首先)在任何变量中看起来。level_df
下一个:用相应的行和填充矩阵的所有单元格
评论
for
eval(parse(text = formula_string), level_df)