相关疑难解决方法(0)

轻松查找和替换嵌套列表中的每个匹配项

以此对象为例:

expr <- substitute(mean(exp(sqrt(.)), .))
Run Code Online (Sandbox Code Playgroud)

它是一个嵌套列表.我想找到匹配的每个元素quote(.).

例如,magrittr's解决方案仅匹配调用的第一级:

dots <- c(FALSE, vapply(expr[-1], identical, quote(.), 
                        FUN.VALUE = logical(1)))
dots
[1] FALSE FALSE  TRUE
Run Code Online (Sandbox Code Playgroud)

但我想找到每一个"." 在任意嵌套列表中.在这种特殊情况下,这将是这两个点:

expr[[3]]
expr[[2]][[2]][[2]]
Run Code Online (Sandbox Code Playgroud)

然后应该替换这些点:

expr[[3]] <- as.name("replacement")
expr[[2]][[2]][[2]] <- as.name("replacement")
expr
# mean(exp(sqrt(replacement)), replacement)
Run Code Online (Sandbox Code Playgroud)

你会怎么做?

r function magrittr

6
推荐指数
1
解决办法
249
查看次数

标签 统计

function ×1

magrittr ×1

r ×1