You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让formals()支持获取带package::前缀的函数参数?

解决R中formals()支持带包前缀函数名的问题

当func_name是带package::前缀的字符串时,直接用formals(func_name)会报错,因为formals()会把整个字符串当作单一函数名去查找,无法识别包前缀结构。可以用下面两种更优雅的方法解决:

方法1:拆分包名与函数名,从命名空间获取函数

先把带前缀的字符串拆成包名和函数名两部分,再从对应包的命名空间里取出函数,最后获取参数:

func_name <- "dplyr::mutate"

# 拆分字符串得到包名和函数名
split_result <- strsplit(func_name, "::")[[1]]
pkg <- split_result[1]
func <- split_result[2]

# 获取函数参数
formals(getFromNamespace(func, pkg))

方法2:解析表达式直接处理带前缀的函数名

把字符串转成R表达式并执行,这样就能自动识别package::的结构,再传入formals():

func_name <- "dplyr::mutate"

# 解析表达式并获取参数
formals(eval(parse(text = func_name)))

这两种方法都不需要手动移除前缀,能完整保留包函数的引用逻辑,适合在你的R包内部调用其他开发中包函数的场景。

内容的提问来源于stack exchange,提问作者Will

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:31:06