R语言:向函数向量传递单个值并求值的非循环最优方法
解决方案
首先要注意:直接用c()存储函数是错误的,正确的做法是将函数存为列表:
c_val <- 1 # 避免和R内置函数`c()`重名 functions <- list(function(x) x^2, function(x) 2*x, function(x) x/2)
基础R最佳选择:sapply()
用sapply()可以简洁遍历函数列表,传入指定数值并返回结果向量:
sapply(functions, function(f) f(c_val)) # 输出:[1] 1.0 2.0 0.5
tidyverse风格选择:purrr::map_dbl()
如果习惯tidyverse生态,purrr包的map_dbl()更直观,明确返回数值向量:
library(purrr) map_dbl(functions, ~ .x(c_val)) # 输出:[1] 1.0 2.0 0.5
这两个方法都无需手动写循环,其中sapply()是基础R自带工具,无需额外安装包,适合快速实现需求;map_dbl()在复杂迭代场景下可读性更强。
内容的提问来源于stack exchange,提问作者user352188
相关产品推荐
相关产品推荐

