这些看起来不像字符串;看起来像函数列表。要回答标题中提出的问题,请参阅 get()
。例如,使用列表但存储为字符串:
funcList <- list("*", "sin")
我们可以用来 get()
返回由列表中选定的元素给定名称的函数:
> f <- get(funcList[[1]])
> f
function (e1, e2) .Primitive("*")
> f(3,4)
[1] 12
另一种方法是使用 match.fun()
函数,给定一个字符串,它会找到一个名称与该字符串匹配的函数:
> f2 <- match.fun(funcList[[1]])
> f2(3,4)
[1] 12
但正如 ?match.fun
告诉我们的那样,我们可能不应该在提示下执行此操作,而应该在函数内部执行此操作。
如果您确实有一个函数列表,那么您可以简单地对列表进行索引并将其用作函数:
> funcList2 <- list(`*`, sin)
> str(funcList2)
List of 2
$ :function (e1, e2)
$ :function (x)
> funcList2[[1]](3, 4)
[1] 12
> funcList2[[2]](1.2)
[1] 0.9320391
或者您可以将函数保存为临时对象,但这样做没有什么意义:
> f3 <- funcList2[[1]]
> f3(3,4)
[1] 12
> f4 <- funcList2[[2]]
> f4(1.2)
[1] 0.9320391