Я задал вопрос до How to take in text/character argument without quotes. В сценарии, который я предоставил в этом вопросе, количество аргументов фиксировано, поэтому число eval (substitute()), которое я использую в определении функции, соответствует количеству аргументов, которые у меня есть.Использовать eval (substitute()) для нескольких выражений
Теперь у меня есть сценарий, где у меня есть один аргумент, например factors
(смотри ниже), и пользователь может указать несколько имен столбцов, не используя кавычки вокруг них - то есть, они будут использовать 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"))