を使用して同様の関数のリストを作成しようとすると、リストlapply
内のすべての関数が同一であり、最終的な要素があるべきものと等しいことがわかります。
次の点を考慮してください。
pow <- function(x,y) x^y
pl <- lapply(1:3,function(y) function(x) pow(x,y))
pl
[[1]]
function (x)
pow(x, y)
<environment: 0x09ccd5f8>
[[2]]
function (x)
pow(x, y)
<environment: 0x09ccd6bc>
[[3]]
function (x)
pow(x, y)
<environment: 0x09ccd780>
これらの関数を評価しようとすると、同じ結果が得られます。
pl[[1]](2)
[1] 8
pl[[2]](2)
[1] 8
pl[[3]](2)
[1] 8
ここで何が起こっているのか、どうすれば希望する結果 (リスト内の正しい関数) を得ることができますか?