関数内関数とmapplyの付近でなんだかよく分からない挙動になっている。まず、以下のような関数を用意。
hoge <- function(x1,x2){ return(function(y){ cat(x1,x2,fill=TRUE) x1*x2*y}) }
内側のmapplyで関数を生成、外側のmapplyでそれを評価している。
> mapply(function(f){f(1)},mapply(hoge,1:3,3:1)) 3 1 3 1 3 1 [1] 3 3 3
なんだかよく分からないが、全部同じになってしまう。これを回避するためには
> hoge <- function(x1,x2){ + x1 <- x1 + x2 <- x2 + return(function(y){ + cat(x1,x2,fill=TRUE) + x1*x2*y}) + } > mapply(function(f){f(1)},mapply(hoge,1:3,3:1)) 1 3 2 2 3 1 [1] 3 4 3
などというよく分からないことをしないといけない。こんなの書きたくないわけである。うーん。。。