gpt4 book ai didi

r - 循环函数列表,并将函数名称作为字符返回

转载 作者:行者123 更新时间:2023-12-02 08:27:33 26 4
gpt4 key购买 nike

在 R 中,我有一个函数列表(模拟策略)。例如:

a <- function(x){
return(x)
}

b <- function(y){
return(y)
}
funclist <- list(a,b)

我想编写一些代码来返回每个函数的名称。通常,对于我会使用的函数:

as.character(substitute(a))

但这对列表不起作用,因为它只会返回列表名称(如预期的那样)。然后我尝试了 lapply:

> lapply(X = funclist,FUN = substitute)
Error in lapply(X = funclist, FUN = substitute) :
'...' used in an incorrect context

但是得到上面的错误。

理想情况下我会得到(lapply 解决方案):

[[1]]
[1] "a"

[[2]]
[1] "b"

甚至(应用解决方案):

[1] "a" "b"

最佳答案

完成后

funclist <- list(a,b)

评估参数ab 并返回它们指向的函数。没有办法恢复到原来的名字。 (substitute()“技巧”适用于作为 promises 传递给函数的参数。如果没有额外的转义,它不会适用于已评估的调用。)

如果要保留名称,最好使用命名列表。你可以做

funclist <- list(a=a,a=b)

funclist <- setNames(list(a,b), c("a","b"))

甚至在这里使用mget()

funclist <- mget(c("a","b"))

所有这些方法都会返回一个命名列表,你可以使用

names(funclist)
# [1] "a" "b"

获取名字

关于r - 循环函数列表,并将函数名称作为字符返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30741304/

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