【发布时间】:2019-12-21 07:48:09
【问题描述】:
我创建了一个函数来将函数名转换为字符串。版本 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 转换为字符串之前调用它,它会在函数内部进行评估并因此抛出错误消息。但是,我没有做任何作业,为什么会发生这种情况呢?
我的问题是为什么会发生这种情况,有没有更好的方法将函数名转换为字符串?
感谢任何帮助,谢谢!
【问题讨论】: