【发布时间】:2023-01-10 02:31:40
【问题描述】:
假设我有这个功能:
f <- function(input){
name <- "hello_"
}
我希望能够使用
f(world)
并将name重命名为"hello_world"。
重要的是我不希望输入是一个字符串。所以解决方案应该不涉及f("world")。
【问题讨论】:
假设我有这个功能:
f <- function(input){
name <- "hello_"
}
我希望能够使用
f(world)
并将name重命名为"hello_world"。
重要的是我不希望输入是一个字符串。所以解决方案应该不涉及f("world")。
【问题讨论】:
像这样使用substitute:
f <- function(input) paste0("hello_", substitute(input))
f(world)
## [1] "hello_world"
请注意,以这种方式设计您的函数以使用非标准评估 (NSE) 将降低它们的编程灵活性。例如,假设我们将"world" 存储在x 中。然后我们得到以下显然不是我们想要的。
x <- "world"
f(x)
## [1] "hello_x"
可以绕过它,但很痛苦:
do.call("f", list(x))
## [1] "hello_world"
【讨论】: