次の関数が与えられます:
f <- function (x, y, data) {
linm <- lm(y ~ x, data)
summary(linm)$r.squared
}
次の呼び出しは失敗します。
d <- data.frame(a = c(1, 2), b = c(3, 4), d = c(5, 6))
f('a', 'b', d)
明らかに列をlm
検索し、変数名をその内容に置き換えるのではないため)。どうすればこれを修正できますか?x
y
表現をいじってみましsubstitute
たが、無駄になりました。残念ながら、Rがこれらのオブジェクトをどのように処理し、どのコンテキストで式が評価されるのかを完全には理解していないため、結果として盲目的に飛んでいます。これが私が試したものです(動作していません):
exp <- substitute(expression(y ~ x), list(x = x, y = y))
linm <- lm(formula = exp, data = data)
検査するとき、exp
オブジェクトは実際に有望に見えます。残念ながら、私はlm
それを飲み込むように説得することはできません。