Возьмите этот объект в качестве примера:
expr <- substitute(mean(exp(sqrt(.)), .))
Это вложенный список. Я хочу найти все элементы, соответствующие quote(.)
.
Например, решение magrittr
соответствует только первому уровню вызова:
dots <- c(FALSE, vapply(expr[-1], identical, quote(.),
FUN.VALUE = logical(1)))
dots
[1] FALSE FALSE TRUE
Но я хотел найти каждый "." в произвольном вложенном списке. В данном конкретном случае это будут две точки:
expr[[3]]
expr[[2]][[2]][[2]]
И тогда эти точки следует заменить:
expr[[3]] <- as.name("replacement")
expr[[2]][[2]][[2]] <- as.name("replacement")
expr
# mean(exp(sqrt(replacement)), replacement)
Как бы вы это сделали?