在R语言中如何根据指定向量控制函数的执行顺序?
实现方案
核心思路是动态获取对应函数对象后按顺序执行,无需编写大量分支判断,可适配任意数量的函数场景。
方法1:动态获取函数(无需提前整理函数列表)
通过paste0拼接函数名,再用get()从当前环境中提取对应函数直接执行:
# 遍历funcorder的编号依次执行对应函数 for (func_idx in funcorder) { get(paste0("func", func_idx))() }
如果需要收集所有函数的返回结果,或者偏好向量化写法,可以用lapply实现:
# 去掉invisible可获得按调用顺序存储的函数返回值列表 invisible(lapply(funcorder, function(i) get(paste0("func", i))()))
方法2:预存函数列表(更稳妥,避免命名冲突)
如果运行环境复杂度较高,怕get()误取其他同名对象,可以提前把所有函数整理到索引和编号对应的列表中,再按顺序调用:
# 提前构建函数列表,第n个元素对应funcn func_list <- list(func1, func2, func3, ..., funcn) # 按funcorder的顺序调用 for (func_idx in funcorder) { func_list[[func_idx]]() }
内容的提问来源于stack exchange,提问作者Dean MacGregor
相关产品推荐
相关产品推荐

