gpt4 book ai didi

r - 基于应用函数命名 R 中的列表元素

转载 作者:行者123 更新时间:2023-12-03 07:51:33 37 4
gpt4 key购买 nike

我有一组函数funs <- c(mean, median, min, max, quantile)我想将其应用于数值向量 values 。这可以通过 sapply() 轻松完成但其结果是没有一个元素有名称。我希望每个列表元素根据应用的函数命名。我尝试过:

funs <- c(mean, median, min, max, quantile)
some_vals <- c(rnorm(14))

stats <- sapply(funs, function(fun) {
result <- fun(some_vals)
names(result) <- deparse(substitute(fun))
return(result)
}
)

但是每个列表元素都被命名为 X[[i]]。如何根据应用的函数命名列表元素?

最佳答案

困难在于,一旦将函数对象存储在列表中,它们就不再拥有名称,除非您在列表中为该对象指定名称。

我会使用字符串作为函数名称,然后在 sapply 中使用 match.fun。这很容易做到,而且您可以免费获得名称。

funs <- c("mean", "median", "min", "max", "quantile")
some_vals <- c(rnorm(14))

sapply(funs, function(fun) match.fun(fun)(some_vals))
#> $mean
#> [1] -0.06134755
#>
#> $median
#> [1] -0.3473996
#>
#> $min
#> [1] -2.140686
#>
#> $max
#> [1] 1.940046
#>
#> $quantile
#> 0% 25% 50% 75% 100%
#> -2.1406864 -0.7488198 -0.3473996 0.7707063 1.9400459

另一种方法是为您的列表命名:

funs <- c(mean = mean, median = median, min = min, max = max, 
quantile = quantile)

sapply(funs, function(fun) fun(some_vals))
#> $mean
#> [1] -0.06134755
#>
#> $median
#> [1] -0.3473996
#>
#> $min
#> [1] -2.140686
#>
#> $max
#> [1] 1.940046
#>
#> $quantile
#> 0% 25% 50% 75% 100%
#> -2.1406864 -0.7488198 -0.3473996 0.7707063 1.9400459

创建于 2023 年 8 月 21 日 reprex v2.0.2

关于r - 基于应用函数命名 R 中的列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76946832/

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