私は呼び出しオブジェクトを持っていますが、引数を追加したいので、構文解析を使用したくありませんthis answer does。"call"オブジェクトの引数を変更する
だから、私は私が電話を使用して、引数、weights=wt
を追加したいと言う、今lm
オブジェクト、およびそのlm
lma <- lm(mpg ~ cyl, data=mtcars)
lma$call
# lm(formula = mpg ~ cyl, data = mtcars)
から電話を持っていると言います。私は信じられないほど簡単に新しい呼び出しを作成する方法があることを認識しますが、私は呼び出しオブジェクトを扱うことができるのだろうかと思っています。それはそこに
lmb <- lm(mpg ~ cyl, data=mtcars, wei=wt)
cl <- lmb$call
wtpos <- which.max(pmatch(names(cl), "weights"))
cl[[wtpos]] <- mtcars$qsec
eval(cl)
にすでにあったが、lma$call
には重み引数がないので、これはlma$call
に動作しない場合weights
を編集する方法もあります。
なので、別の要素を追加してコールを単純に拡張できるはずですが、その方法はわかりません。たとえば、次は失敗:
cl <- lma$call
cl <- c(cl, weights=quote(wt))
eval(cl)
# [[1]]
# lm(formula = mpg ~ cyl, data = mtcars)
#
# $weights
# wt
ので、私はlmb
に等しい新しい「LM」オブジェクトだけでなく、リストでは結果を望んでいるだろう。
回避策がありますが、構文解析(lmのコピーにwt = weightsをデフォルトとして変更するために、similar to in this solution)を使用するのではなく、呼び出しオブジェクトを編集する必要はありません。
チップをありがとう。これを検索すると、WickhamのAdvanced RのExpress:Calls:通話の変更(http://adv-r.had.co.nz/Expressions.html#callsでオンライン)のはるかに簡単なソリューションが得られます。 'cl < - lma $ call; cl $ weights < - quote(wt); eval(cl) ' 私には私が望む結果が与えられます。 –