评估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 在 y
和 x
中的字符串中编码的函数是函数参数。
此外,您可以简单地使用 match.fun
,它会查看环境中是否存在具有特定名称的函数并获取该函数。然后再将它应用到参数 x
like
match.fun(y)(x)
假设我有以下内容:
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 在 y
和 x
中的字符串中编码的函数是函数参数。
此外,您可以简单地使用 match.fun
,它会查看环境中是否存在具有特定名称的函数并获取该函数。然后再将它应用到参数 x
like
match.fun(y)(x)