R函数 - 选择特定参数

时间:2017-11-29 19:26:42

标签: r function

试图弄清楚如何使这个功能起作用:

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

有什么想法吗?

2 个答案:

答案 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