Restituendo le funzioni anonime da lapply – cosa sta andando storto?

Quando lapply a creare un elenco di funzioni simili usando lapply , trovo che tutte le funzioni nell’elenco sono identiche e uguali a ciò che dovrebbe essere l’elemento finale.

Considera quanto segue:

 pow <- function(x,y) x^y pl <- lapply(1:3,function(y) function(x) pow(x,y)) pl [[1]] function (x) pow(x, y)  [[2]] function (x) pow(x, y)  [[3]] function (x) pow(x, y)  

Quando provi a valutare queste funzioni ottieni risultati identici:

 pl[[1]](2) [1] 8 pl[[2]](2) [1] 8 pl[[3]](2) [1] 8 

Cosa sta succedendo qui e come posso ottenere il risultato che desidero (le funzioni corrette nella lista)?