gpt4 book ai didi

r - 获取列表中函数的名称

转载 作者:行者123 更新时间:2023-12-04 21:03:53 25 4
gpt4 key购买 nike

我希望达到的目标

所以我想在函数列表中获取函数的名称。

这是一个例子:

foo = list(foo1 = sum, foo2 = mean)

我希望从 foo 中提取的内容是:
list("sum", "mean")

我希望它是一个函数,意思是:
> foo = list(foo1 = sum, foo2 = mean)
> super_function(foo)
list("sum", "mean")

我检查的内容

应用名称:
> sapply(foo , names)
$`foo1`
NULL

$foo2
NULL

应用 deparse(substitute())
> my_f <- function(x)deparse(substitute(x))
> sapply(foo, my_f)
foo1 foo2
"X[[i]]" "X[[i]]"

这两个想法都行不通......

更多背景:

这里有更多细节。不需要他们理解第一个问题,而是社区询问的额外细节。

我将这些函数用作用户给出的聚合函数。
data(iris)
agg_function<-function(data, fun_to_apply){
res <- list()
for (col_to_transform in names(fun_to_apply)){
res[col_to_transform] <- (fun_to_apply[[col_to_transform]])(data[[col_to_transform]])
}
res
}


agg_function(iris, fun_to_apply = list("Sepal.Length" = mean, "Petal.Length" = sum))

结果是:
$`Sepal.Length`
[1] 5.843333

$Petal.Length
[1] 563.7

在此示例中,我正在对两列 iris 执行聚合。但我希望在我的结果的每个字段的名称中包含执行函数的名称。
注意:这是对我正在做的事情的过度简化;

结论:

你有什么想法?

最佳答案

如果您只是从列表 foo = list(foo1 = sum, foo2 = mean) 开始,那么这是不可能的。调用 list()将评估返回变量值的参数 summean指向但它不会记住那些变量名。函数在 R 中没有名称。但函数可以分配给变量。然而,在 R 中,函数也可以没有名字。

您基本上刚刚创建了一个命名的函数列表。这也可能看起来像这样

foo = list(foo1 = function(x) sum(x+1), 
foo2 = function(x) mean(x+1))

这里我们也有函数,但是这些函数除了你在列表中给它们的名字之外没有“名字”。

完成这项工作的唯一机会是使用 list() 以外的其他东西。首先创建 foo 时。或者让他们实际显式调用 list()在函数调用中(这不是很实用)。

关于r - 获取列表中函数的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51634713/

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