Zadałem pytanie przed około How to take in text/character argument without quotes. W scenariuszu, który podałem w tym pytaniu, liczba argumentów jest stała, więc liczba eval (substitute()), której używam w definicji funkcji, odpowiada liczbie argumentów, które mam.Użyj eval (substitute()) na wielu wyrażeń
Teraz mam scenariusz, gdzie mam jeden argument, na przykład factors
(patrz poniżej), a użytkownik może określić wiele nazw kolumn bez użycia cudzysłowów wokół nich - to znaczy, będą korzystać factor1
zamiast "factor1"
. Chciałbym ocenić każdą z nazw kolumn podaną przez użytkownika.
foo<-function(data.frame, factors){
}
Pytanie 1: Zastanawiam się, czy istnieje sposób, aby zastosować eval (Zastępca()) do wielu wyrażeń, gdy liczba wyrażeń może być różna.
Jak wskazano, eval (substitute()) może być potencjalnie niebezpieczny i może zawieść w pewnych okolicznościach.
Pytanie 2: tak to jest bardziej eleganckim sposobem radzenia sobie z problemem innym niż przy użyciu podane nazwy kolumn, jak pokazano poniżej:
foo<-function(data.frame, factors){
output<-data.frame[, factors]
output
}
foo(data.frame=dataset, factors=c("factor1", "factor2"))