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

如何在R语言中判断用户传入函数的参数数量?

解决方案

要获取传入函数f的参数数量,可直接使用R内置的formals()函数提取形式参数列表,再通过length()获取参数个数。

完整实现代码

myfun = function(f) { 
  numarg = length(formals(f))
  if(numarg == 0) {
    return(doA.cpp(f))
  } else {
    return(doB.cpp(f))
  }
}

逻辑说明

  • formals(f)会返回函数f的形式参数集合:
    • 若f无参数,返回NULL,length(NULL)的结果为0;
    • 若f有1个或多个参数,返回对应参数的pairlist结构,length()的结果即为参数总数。
  • 通过这个判断逻辑,就能自动根据f的参数数量分支调用对应的Rcpp程序。

调用验证

以下示例会根据f的参数情况自动匹配执行逻辑:

# 无参数函数,触发doA.cpp调用
myfun(f = function() rnorm(10))
# 带单个参数的函数,触发doB.cpp调用
myfun(f = function(m) rnorm(10, m))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:45:41