複数のモデルを簡単に再構築できるようにいくつかの関数を記述しようとしていますが、評価木に深く入ったR 。 モデル内に数式環境を格納するための努力がなされたにもかかわらず、実際のデータオブジェクトを明白に指す方法はないと思います。 survfit
を使用してサバイバルフィッティングを行う場合、これはさらに難しくなります。terms
オブジェクトは内部に格納されません。適合モデルを操作/更新するときのソースデータへのアクセス方法
実際にデータ/式を毎回パラメータとして再入力する必要がありますか?
例:
# model-fitting wrapper function
fn <- function(fn_formula, fn_data) {
lm(formula = fn_formula, data = fn_data)
}
# specify exemplary data and formula
data <- data.frame(
y = rnorm(100),
x1 = rnorm(100),
x2 = rnorm(100))
formula <- y ~ x1
# try to create and update the fit with different parameters
fn_fit <- fn(formula, data)
update(fn_fit, ~ x2)
# Error in is.data.frame(data) : object 'fn_data' not found
terms(fn_fit) %>% attr('.Environment')
# <environment: R_GlobalEnv>
terms(fn_fit$model) %>% attr('.Environment')
# <environment: R_GlobalEnv>
getCall(fn_fit)
# lm(formula = fn_formula, data = fn_data)
私はそれが非標準的な評価と電話を操作すると、関連する変数をキャプチャすることも可能だと承知しているが、それは、複数のラッパーを必要とするように私は、それが直感的見つけます、モデルが標準呼び出しを使用してまだフィットされておらず、実際の呼び出しスタックに大きく依存していると仮定します。 私が実際に理解していないことは、元のデータを保存する保証はないが、同じ時に作成された他のメモリ消費変数を含むかもしれない 'y〜x1'呼び出しの呼び出し環境全体を' terms'で維持する点ですラッパー関数の呼び出し - 簡単な説明はありますか? – mjktfw