试图弄清楚如何使这个功能起作用:
test_function <- function(option = c(x,y,z)) {
x <- 5
y <- 50
z <- 500
y <- option + 1000
return(y)
}
所以我想输入x,y或z,并根据函数内存储的参数得到结果。例如:
test_function(z)
[1] 1500 ##option = z = 500; y = 500 + 1000
有什么想法吗?
答案 0 :(得分:3)
这个怎么样:
test_function <- function(option) {
case <- switch(option, "x" = 5, "y" = 50, "z" = 500)
y <- case + 1000
return(y)
}
请注意,参数应该是一个字符
> test_function("z")
[1] 1500
答案 1 :(得分:3)
f0 = function(opt = c("x","y","z"))
c(x = 5, y = 50, z = 500)[[match.arg(opt)]] + 1000
f = function(opt_raw) f0( as.character(substitute(opt_raw)) )
用法:
> f(x)
[1] 1005
> f(y)
[1] 1050
> f(z)
[1] 1500
可能最好坚持使用f0
,而不是坚持在没有引号的情况下传递x
。