【发布时间】:2020-06-20 12:33:04
【问题描述】:
我想创建一个函数,它本身使用了很棒的glue::glue 函数。
但是,当我想粘合一个存在于函数和全局环境中的变量时,我发现自己正在处理一些命名空间问题:
x=1
my_glue <- function(x, ...) {
glue::glue(x, ...)
}
my_glue("foobar x={x}") #not the expected output
# foobar x=foobar x={x}
为了包的一致性,我宁愿保留名为 x 的变量。
我最终做了这样的事情,到目前为止效果很好,但只是推迟了问题(很多,但仍然):
my_glue2 <- function(x, ...) {
x___=x; rm(x)
glue::glue(x___, ...)
}
my_glue2("foobar x={x}") #problem is gone!
# foobar x=1
my_glue2("foobar x={x___}") #very unlikely but still...
# foobar x=foobar x={x___}
有没有更好/更清洁的方法来做到这一点?
【问题讨论】:
-
@RonakShah 抱歉,复制粘贴错误
-
但是你没有在函数中传递值
x = 1。您希望它如何进入功能?为什么不传递它是一个单独的参数? -
你说得对,这不是很清楚。我希望我的函数始终使用调用环境的 x 变量,而不是保存整个字符串的 x 参数
标签: r namespaces r-environment r-glue