これらの関数のデフォルト値を指定せずに複数の引数を必要とする関数があります。しかし、それらのうちのいくつかが指定されていなくても、これらのパラメータが行列(そしておそらく他の型)のサブセットにしか使われないならば、関数は値を返します。なぜこれが当てはまるのか困惑しています - 誰でも助けることができますか?デフォルト以外の関数の値は無視されます
具体的には、なぜ次のコードがエラーを返さないが、マトリックス全体にわたって合計し、j
を無視:
foo <- function(mat, j){
v <- sum(mat[,j])
v
}
foo(mat = matrix(1:4,3,4))
' R'が環境内の 'j'の値を見つけることができないとき、' j'が列(行)を示すはずであるということを無視しますか?これは常にオブジェクトのインデックスを作成する場合ですか? –
いいえ、Rが 'j'を評価し、現在または親環境で' j'が見つからない場合、エラーが発生します。この場合、 'j'は評価されないのでエラーはありません。 Rの引数は、必要ならば関数環境で評価され、 'missing()'のような特殊関数は引数を全く評価しません。 –