尝试使用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
这里发生了什么事情,我该如何获得我想要的结果(即列表中正确的函数)?
pl <- function(x,y) lapply(y,function(y) pow(x,y)); pl(2,1:3)
? - Roland