如何解决将R函数参数转换为字符串
my_function <- function(object)
{
# code goes here
}
我想让函数(除其他外)打印自变量的名称(传递给函数)。因此,如果我的函数调用是:
xxx <- my_function(my_object)
然后,我想知道如何获取该函数以打印出字符串"my_object"
。
有人可以帮忙吗?
解决方法
更R
的解决方案是结合使用substitute
(代替obj
)和deparse
(将符号转换为字符串):
my_function <- function(obj) {deparse(substitute(obj))}
一般的R
元编程规则:更喜欢substitute
!
my_function(my_object)
## [1] "my_object"
,
我建议采用更接近您想要的方法。当然可以修改它以获得其他输出:
#Function
my_function <- function(x)
{
as.character(eval(parse(text=enquo(x)))[2])
}
#Apply
my_function(x = my_object)
输出:
[1] "my_object"
接下来是@MrFlick的改进:
#Function
my_function <- function(x)
{
rlang::as_label(rlang::enquo(x))
}
#Apply
my_function(x = my_object)
在函数中产生相同输出且样式更优雅的
[1] "my_object"
,
要显示整个通话,请像这样使用match.call
:
f <- function(x) { print(match.call()); x }
f(pi)
## f(x = pi)
## [1] 3.141593
如果希望仅在调试时显示调用而不修改函数本身,则使用trace
:
g <- function(x) x # test function
trace(g)
g(pi)
## trace: g(pi)
## [1] 3.141593
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。