Einfaches Suchen und Ersetzen aller Übereinstimmungen in einer verschachtelten Liste
Nehmen Sie dieses Objekt als Beispiel:
expr <- substitute(mean(exp(sqrt(.)), .))
It ist eine verschachtelte Liste. Ich möchte jedes Element finden, das mit @ übereinstimquote(.)
.
Zum Beispiel,magrittr
ie Lösung von @ entspricht nur der ersten Ebene des Aufrufs:
dots <- c(FALSE, vapply(expr[-1], identical, quote(.),
FUN.VALUE = logical(1)))
dots
[1] FALSE FALSE TRUE
Aber ich wollte jedes "." in einer beliebigen verschachtelten Liste. In diesem speziellen Fall wären dies diese beiden Punkte:
expr[[3]]
expr[[2]][[2]][[2]]
Und dann sollten diese Punkte ersetzt werden:
expr[[3]] <- as.name("replacement")
expr[[2]][[2]][[2]] <- as.name("replacement")
expr
# mean(exp(sqrt(replacement)), replacement)
Wie würdest du das machen?