Ich habe nicht viel (beliebte) Literatur über die Manipulation von Funktionsumgebungen / die Verwendung von <<-
in R gesehen (abgesehen von in adv-r). Insbesondere, was sind die Tabus von R in Bezug auf diese Dinge. Um diese Frage konkret zu machen, betrachten Sie die folgenden Funktionen:
appendOne <- function(env=parent.frame()) {
tmp <- function(.x) {
eval(substitute(.x <<- c(.x, "1")))
}
parent.env(environment(tmp)) <- env
return(tmp)
}
g <- function() {
.y <- 4
appendOne()(.y)
.y
}
Der Zweck von appendOne ist ziemlich offensichtlich. Nun sind die Fragen (und ich verstehe, dass dies teilweise subjektiv ist):
- Was ist an dieser Strategie, Funktionen ausschließlich für ihre Seiteneffekte zu erstellen, in R gefährlich?
- Ist dieses Art von Programmiermuster "tabu" in R? Ich sehe nicht viel vom
eval
-substitute
-Muster abgesehen von auf sehr hohen Ebenen. Liegt das daran, dass es schwer ist Anfängern zu erklären, oder weil es nicht ermutigt wird?