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,magrittrie 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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage