gpt4 book ai didi

r - R中如何使用函数名的字符串来调用函数?

转载 作者:行者123 更新时间:2023-12-03 07:38:06 25 4
gpt4 key购买 nike

我正在尝试使用给定的函数名称字符串来调用函数。

例如

print(funcList)
[[1]]
`*`

[[2]]
sin

作品:

mult <- `*`
mult(5,6)
[1] 30

不起作用:

func1 <- funcList[[1]]
func1(5,6)

func2 <- funcList[[2]]
func2(1.2)

那么是否可以调用functionList中的所有函数呢?

最佳答案

那些看起来不像字符串;看起来像一个函数列表。要回答标题中提出的问题,请参阅 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

关于r - R中如何使用函数名的字符串来调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6403852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com