以前postと未評価の関数呼び出しを作成すると、引数も未評価されている機能に未評価の呼び出しを作成するためにquote()
を使用する方法を示しています。が評価されないが、変更の引数
foo <-function(arg1,arg2){
value <- arg1 + arg2
}
foocall <- call("foo",arg1=quote(x),arg2=quote(y))
foocall
# foo(arg1 = x, arg2 = y)
どのように私は、この品質を保つことができますが、 arg1の指定を変更できるようにします。たとえば、私の環境では2つの名前付きオブジェクトnとmがあり、時には1つを渡したい場合があり、もう一方を渡したいことがあります。
## Named objects
n <- c(2,3)
m <- 3
## Case 1: i would like to pass over n
z <-n
call("foo", arg1=quote(z), arg2=quote(y))
## desired output
#foo(arg1 = n, arg2=y)
## Case 2: pass over m
z <- m
call("foo", arg1=quote(z), arg2=quote(y))
## desired output
#foo(arg1 = m, arg2=y)
私はきちんと私の質問を策定するために苦労を持っているが、私はこのようにそれを述べるだろう:どのように変更することができ、変数をarg1がために割り当てることができますが、「すべての道をダウン」評価しませんが、それがバインドされているオブジェクトの名前にのみ適用されますか?あなたは
> z <- n
を行うと
私にはわかりません。どちらの場合も、呼び出しを 'eval'すると、定義したように' n'または 'm'の値が正しく使用されます。 (あなたの例は 'foo'が実際に' value'を返すならば、あなたの例はおそらくもっと簡単になります。) – joran
私の主な目標は、評価するのではなく、文書化することです。実際はクラスlmのオブジェクトの$ call list- – laterstat
ああ、「元の」シンボルに「アンラップ」されたすべてのシンボルが表示されます。 Hm。 – joran