Я пытаюсь определить список функций в цикле, например так:
rr <- list(); ss <- list(list(1,2),list(3,4))
for (i in 1:length(ss)) {
A <- ss[[i]][1]
B <- ss[[i]][2]
print(paste("A, B:", A, ",", B))
rr[[i]] <- function () { force(B); B }
}
Оператор print
дает:
[1] "A, B: 1 , 2"
[1] "A, B: 3 , 4"
... чточто я хочу!Но когда я пытаюсь использовать функции, я получаю неправильный ответ (A
и B
лениво оцениваются и, я думаю, ждут, пока функция не будет вызвана, чтобы получить их значения):
> environment(rr[[1]])$A
[[1]]
[1] 3
> rr[[1]]()
[[1]]
[1] 4
> environment(rr[[2]])$A
[[1]]
[1] 3
> rr[[2]]()
[[1]]
[1] 4
Как я могу переписать вышеуказанный цикл for
, чтобы каждая функция rr[[i]]
имела свой собственный внутренний набор параметров, который не будет изменен последующими rr[[n > i]]
определениями функций?