0

predictlme4 のlmerモデルのスタイル関数を書こうとしています。アイデアは、によって生成される種類の因子および変数レベルを含むデータフレームで予測関数が機能するということですexpand.grid

level_df <- expand.grid(a=1:3, b=4:6)

特定の効果/相互作用を文字列として計算するための式を取得できるところまで来ました。

formula_string <- "a * b + 3"

しかし、その数式をレベルデータフレームに適用できる唯一の方法 (この場合、aandの各値の数式を評価するb) は、かなりリベラルでおそらく危険なassignandのようなものを使用すること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
)

文字列とシンボル/変数名の間で変換するより安全で高速な方法はありますか?

4

1 に答える 1

1

data.frame のenvir引数としてaを使用できますeval

それで

 eval(parse(text = formula_string), envir = level_df)

level_df任意の変数を (最初に) 内部で検索するため、うまく機能するはずです。

于 2013-02-06T01:10:22.790 に答える