Wenn ich versuche, eine Liste von ähnlichen Funktionen mit lapply
zu erstellen, finde ich, dass alle Funktionen in der Liste identisch sind und gleich, was das letzte Element sein sollte.Anonyme Funktionen von lapply zurückgeben - was läuft falsch?
Betrachten Sie das folgende:
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>
Wenn Sie versuchen, diese Funktionen bewerten Sie identische Ergebnisse erhalten:
pl[[1]](2)
[1] 8
pl[[2]](2)
[1] 8
pl[[3]](2)
[1] 8
Was hier vor sich geht, und wie kann ich das Ergebnis, das ich wünsche (die richtigen Funktionen in der Liste)?
Ich bin nicht sicher, was Ihr Ziel ist. Vielleicht 'pl <- Funktion (x, y) lapply (y, Funktion (y) pow (x, y)); pl (2,1: 3) '? – Roland
Diese Noten von Ross Ihaka (RCore) könnte hilfreich sein (genauer gesagt der Teil zu Lazy Evaluation) www.stat.auckland.ac.nz/~ihaka/downloads/Waikato-WRUG.pdf –
Beachten Sie, dass dies nicht länger wahr, wie von R 3.2.0, siehe meine Antwort unten. – jhin