为什么应用和行为与手动重复不同

时间:2015-03-03 03:54:01

标签: r lambda

为什么后两者的行为不同?在我看来,他们都应该给出相同的输出(1,2)。

myFunc = function(i) {
    return(function() { return(i) })
}
mF1 = myFunc(1);
mF1() #1
mF2 = myFunc(2);
mF1() #1
mF2() #2

myList = list()
for(i in 1:2) {
    myList[[i]] = myFunc(i)
}
myList[[1]]() #2
myList[[2]]() #2

applyList = lapply(c(1,2), myFunc)
applyList[[1]]() #2
applyList[[2]]() #2

感谢。

0 个答案:

没有答案