Ich fragte eine Frage vor über How to take in text/character argument without quotes. In dem Szenario, das ich in dieser Frage angegeben habe, ist die Anzahl der Argumente festgelegt, so dass die Anzahl von eval (substitute()), die ich in der Funktionsdefinition verwende, der Anzahl der Argumente entspricht, die ich habe.Verwenden Sie eval (substitute()) für mehrere Ausdrücke
Jetzt habe ich ein Szenario, in dem ich ein Argument haben, zum Beispiel factors
(siehe unten), und der Benutzer kann ohne die Verwendung von Anführungszeichen um sie mehrere Spaltennamen angeben - das heißt, sie werden factor1
statt "factor1"
verwenden. Und ich möchte jeden der vom Benutzer angegebenen Spaltennamen auswerten.
foo<-function(data.frame, factors){
}
Frage 1: Ich frage mich, ob es einen Weg gibt eval (Ersatz()), um mehrere Ausdrücke anzuwenden, wenn die Anzahl von Ausdrücken variieren kann.
Wie bereits erwähnt, kann eval (substitute()) möglicherweise gefährlich sein und kann unter bestimmten Umständen fehlschlagen.
Frage 2: so ist es eine elegantere Art und Weise mit dem Thema zu befassen andere als Spaltennamen zitiert wie unten gezeigt:
foo<-function(data.frame, factors){
output<-data.frame[, factors]
output
}
foo(data.frame=dataset, factors=c("factor1", "factor2"))