私は約How to take in text/character argument without quotesの前に質問しました。私がその質問で提供したシナリオでは、引数の数は固定されているので、関数定義で使用するeval(substitute())の数は、引数の数に相当します。複数の式にeval(substitute())を使用
今私は(下記参照)の例factors
ため私は1つの引数を持つシナリオを持って、ユーザーが自分の周りの引用符を使用せずに、複数のカラム名を指定することができます - つまり、彼らはfactor1
の代わり"factor1"
を使用します。また、ユーザーが提供する各列名を評価したいと思います。
foo<-function(data.frame, factors){
}
質問1:式の数を変えることができたときに複数の式にはeval(代替を())を適用する方法がある場合、私は疑問に思います。
指摘したように、eval(substitute())は潜在的に危険であり、特定の状況下では失敗する可能性があります。
質問2:そう下記のように引用された列名を使用するよりも、他の問題に対処するために、よりエレガントな方法があります:
foo<-function(data.frame, factors){
output<-data.frame[, factors]
output
}
foo(data.frame=dataset, factors=c("factor1", "factor2"))