Я создал функцию для преобразования имени функции в строку. Версия 1 func_to_string1
работает хорошо, а версия 2 func_to_string2
не работает.
func_to_string1 <- function(fun){
print(rlang::as_string(rlang::enexpr(fun)))
}
func_to_string2 <- function(fun){
is.function(fun)
print(rlang::as_string(rlang::enexpr(fun)))
}
func_to_string1
работает:
> func_to_string1(sum)
[1] "sum"
func_to_string2
не работает.
> func_to_string2(sum)
Error: Can't convert a primitive function to a string
Call `rlang::last_error()` to see a backtrace
Я предполагаю, что, вызывая fun
перед преобразованием его в строку, он оценивается внутри функции и, следовательно, выдает сообщение об ошибке. Но почему это происходит, если я не выполнял никаких заданий?
Мои вопросы: почему это происходит и есть ли лучший способ преобразовать имя функции в строку?
Любая помощь приветствуется, спасибо!