我们有一个函数需要多个参数,没有任何默认值.但是,即使未指定其中某些参数,该函数也会返回一个值,如果这些参数仅用于子集矩阵(可能还有其他类型).我们很困惑为什么会这样 - 有人可以帮忙吗?
具体来说,为什么以下代码不返回错误,而是对整个矩阵求和并忽略j
:
foo <- function(mat, j){
v <- sum(mat[,j])
v
}
foo(mat = matrix(1:4,3,4))
Run Code Online (Sandbox Code Playgroud)
我的猜测是这个论点从未被评估过。
foo <- function(x)
bar(x)
bar <- function(y)
missing(y)
foo()
#[1] TRUE
foo(43)
#[1] FALSE
Run Code Online (Sandbox Code Playgroud)
在你的例子中,内部函数[
有正式的参数i, j, ..., drop = FALSE
,很可能会检查参数是否j
丢失,如果丢失,它不会尝试评估它。
归档时间: |
|
查看次数: |
102 次 |
最近记录: |