Localizando e substituindo facilmente todas as correspondências em uma lista aninhada
Tome este objeto como um exemplo:
expr <- substitute(mean(exp(sqrt(.)), .))
É uma lista aninhada. Eu quero encontrar todos os elementos que correspondamquote(.)
.
Por exemplo,magrittr
A solução corresponde apenas ao primeiro nível da chamada:
dots <- c(FALSE, vapply(expr[-1], identical, quote(.),
FUN.VALUE = logical(1)))
dots
[1] FALSE FALSE TRUE
Mas eu queria encontrar todos os "." em uma lista aninhada arbitrária. Nesse caso em particular, seriam esses dois pontos:
expr[[3]]
expr[[2]][[2]][[2]]
E então esses pontos devem ser substituídos:
expr[[3]] <- as.name("replacement")
expr[[2]][[2]][[2]] <- as.name("replacement")
expr
# mean(exp(sqrt(replacement)), replacement)
Como você faria isso?