使用字符串作为函数参数

Kil*_*ian 22 string r function

我确信这很简单,但我找不到解决方案......我想使用包含字符串的变量作为函数的参数.

x <- c(1:10)
myoptions <- "trim=0, na.rm=FALSE"
Run Code Online (Sandbox Code Playgroud)

现在,像

foo <- mean(x, myoptions)
Run Code Online (Sandbox Code Playgroud)

应该是一样的

foo <- mean(x, trim=0, na.rm=FALSE)
Run Code Online (Sandbox Code Playgroud)

提前致谢!

koh*_*ske 26

你可以使用evalparse:

foo <- eval(parse(text = paste("mean(x,", myoptions, ")")))
Run Code Online (Sandbox Code Playgroud)

  • 当然:`图书馆(财富);财富(106)` (6认同)

csg*_*pie 11

一种更自然的方式来做你想要的就是使用do.call.例如,

R> l[["trim"]] = 0
R> l[["na.rm"]] = FALSE
R> l[["x"]] = 1:10
##Or l <- list(trim = 0, na.rm = FALSE, x = 1:10)
R> do.call(mean, l)
 [1] 5.5
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因你真的想要使用myoptions字符串,你总是可以使用strsplit它来将它变成列表形式.例如,

R> y = "trim=0, na.rm=FALSE"
R> strsplit(y, ", ")
[[1]]
[1] "trim=0"      "na.rm=FALSE" 
R> strsplit(y, ", ")[[1]][1]
[1] "trim=0"
Run Code Online (Sandbox Code Playgroud)