4
어디에서 누락 되었습니까? 나는 재미 할당을 선택하면 (예상대로)목록에 함수 바인딩하기
FUN<-list()
make.FUN<-function(i) function(n) i+n
for (i in 1:3) FUN[[i]]<-make.FUN(i)
FUN[[1]](1)
나는 중첩 된 함수에 대한 참조를 가져 :
> FUN[[1]](1)
[1] 4
>
내가 2를 기대하는 경우 :
> FUN
[[1]]
function (n)
i + n
<environment: 0x03adfad0>
[[2]]
function (n)
i + n
<environment: 0x03ae0834>
[[3]]
function (n)
i + n
<environment: 0x03ae0604>
>
문제는 내가 확인하는 경우이다 !
> FUN[[1]](1)
[1] 2
> FUN[[2]](3)
[1] 5
>
I :
FUN[[1]]<-make.FUN(1)
FUN[[2]]<-make.FUN(2)
FUN[[3]]<-make.FUN(3)
내가 정확한 답변을 얻을 : 내가 수동으로 목록의 각 요소에 할당하면, 다른 한편으로
(명확하게 마지막 값을 덮어 쓰기됩니다) do.call을 사용하여 문제를 해결할 수 있지만 첫 번째 루프에서 해석기가 무엇을 가정하는지 또는이 경우 do.call이 필수적인지는 알 수 없습니다. 내가하려고하면 :
은FUN<-list()
make.FUN<-function(i) function(n) i+n
for (i in 1:3) FUN[[i]]<-do.call('make.FUN',list(i))
은 내가 (예상대로) 얻을 :
> FUN[[1]](2)
[1] 3
어떤 단서? (목록을 사용할 때만 발생합니다.)
감사합니다. ... 그것을 확인할 것입니다 ... – MSardelich