微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将R函数参数转换为字符串

如何解决将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 举报,一经查实,本站将立刻删除。