Я пытаюсь написать функцию R, которая может принимать в качестве параметра имя переменной фрейма данных в кавычках или без кавычек или вектор имен переменных.Проблема заключается в том, что когда пользователь вставляет имена столбцов данных без кавычек в качестве входных параметров функции, это приводит к «объект не найден» ошибка .Как я могу проверить, указано ли имя переменной в кавычках?
Я пробовал существует (), отсутствует (), подстановить (), но ни одна из них не работает для всех комбинаций.
# considering this printfun as something I can't change
#made it just for demosnstration purposeses
printfun <- function(df, ...){
for(item in list(...)){
print(df[item])
}
}
myfun<-function(df,x){
#should check if input is quoted or unquoted here
# substitute works for some cases not all (see below)
new_args<-c(substitute(df),substitute(x))
do.call(printfun,new_args)
}
#sample data
df<-data.frame(abc=1,dfg=2)
#these are working
myfun(df,c("abc"))
myfun(df,c("abc","dfg"))
myfun(df,"abc")
#these are failing with object not found
myfun(df,abc)
myfun(df,c(abc))
Я могу различить myfun(df,abc)
и myfun(df,"abc")
с помощью блока try Catch.Хотя это выглядит не очень аккуратно.
Но я не нашел способа отличить второй аргумент в myfun(df,c(abc))
от myfun(df,abc)
?
В качестве альтернативы, могу ли я как-то проверить, еслиошибка возникает из-за пропущенных кавычек, так как я предполагаю, что объект не найден. Ошибка может возникать также из-за того, что что-то еще (например, имя информационного кадра) было напечатано неправильно?