Rの中に、呼び出し元の呼び出し元のコンテキストから変数の名前を取得する関数を記述したいと思います。私が持っている問題は、deparse
とsubstitute
をどのように構成するかを尋ねることによって最もよく理解されると思います。あなたは素朴な組成物は動作しないことがわかります。Rでは、 `deparse(substitute(x))`と同等の関数をどのように定義するのですか?
# a compose operator
> `%c%` = function(x,y)function(...)x(y(...))
# a naive attempt to combine deparse and substitute
> desub = deparse %c% substitute
> f=function(foo) { message(desub(foo)) }
> f(log)
foo
# this is how it is supposed to work
> g=function(foo) { message(deparse(substitute(foo))) }
> g(log)
log
私もeval.parent
を含むバリエーションのカップルを試みたが、運と。どんな助けもありがとうございます。
明確化:私は、例えば、deparse(substitute(...))
の同義語を探していませんよmatch.call()[[2]]
- どのような私が探していることはf
の定義は上記g
と同じ答えを生成するよう
desub = function(foo) {
...
# What goes here?
}
関数を定義する方法です。それは次のようになります。おそらく、
> f=function(foo) { message(desub(foo)) }
> f(log)
log
match.call
は、上記desub
の体内での使用の可能性がありますが、私はどのように知っているように思います。ありがとう!
あなたは – akrun
@akrunをmatch.call' '確認することができます:私はmatch.call''について知っているが、私はそれが役立つかを見ていませんよ。あなたは少し詳しく説明しますか?あるいは、私が求めていることをするコード行を提供するのが最も簡単です。 – Metamorphic
私は 'g1 < - function(foo)match。call()[[2]]; g1(ログ)#ログ ' – akrun