评估R中字符串指向的函数

Evaluating a function pointed to by a string in R

假设我有以下内容:

   x <- 1:10  
   squared <- function(x) {x^2}  
   y <- "squared"

我希望能够使用 y 定义的字符串计算函数。像 eval(y) 这样的东西,我知道这是错误的,但会 return

[1] 1 4 9 16 25 36 49 64 81 100

感谢任何帮助。

或者使用match.fun

match.fun(y)(x)
#[1]   1   4   9  16  25  36  49  64  81 100

或与get

get(y)(x)
#[1]   1   4   9  16  25  36  49  64  81 100

要告诉 R 给定的字符串与其说是一个简单的字符串,不如说是一个命令,请使用 eval(parse(text=...)).

因此,你可以做到

eval(parse(text=y))(x)

其中 eval(parse(text=y)) returns 在 yx 中的字符串中编码的函数是函数参数。

此外,您可以简单地使用 match.fun,它会查看环境中是否存在具有特定名称的函数并获取该函数。然后再将它应用到参数 x like

match.fun(y)(x)