【发布时间】:2020-10-19 07:21:54
【问题描述】:
目标
我正在尝试在 R 中创建一个函数来复制 homonymous MATLAB function 的功能,它返回传递给函数的参数数量。
示例
考虑下面的函数:
addme <- function(a, b) {
if (nargin() == 2) {
c <- a + b
} else if (nargin() == 1) {
c <- a + a
} else {
c <- 0
}
return(c)
}
一旦用户运行addme(),我希望nargin() 基本上查看传递了多少参数——2(a 和b),只有1(a)或无——并计算@ 987654328@相应。
我尝试过的
在花了很多时间弄乱环境之后,这是我最接近可行的解决方案:
nargin <- function() {
length(as.list(match.call(envir = parent.env(environment()))))
}
这个函数的问题是它总是返回 0,原因是我认为它正在查看它自己的环境而不是它的父环境(尽管我尝试在那里抛出一个 parent.env)。
我知道我可以在addme() 中使用missing() 和args() 来实现相同的功能,但是在整个项目中我会多次需要它,所以将它包装在一个函数中绝对是一件好事我应该尝试做。
问题
如何让nargin() 返回传递给其父函数的参数数量?
【问题讨论】:
标签: r matlab arguments environment