如何列出通话中使用的所有符号?

Moo*_*per 3 r metaprogramming

我想列出通话中使用的所有符号或名称。

我发现了以下方法,但是肯定有更惯用或有效的方法吗?

expr <- quote(a + b * (a / b))
expr <- as.list(expr)
while(!identical(expr, (expr <- unlist(lapply(expr,as.list))))){}
unique(expr)
#> [[1]]
#> `+`
#> 
#> [[2]]
#> a
#> 
#> [[3]]
#> `*`
#> 
#> [[4]]
#> b
#> 
#> [[5]]
#> `(`
#> 
#> [[6]]
#> `/`
Run Code Online (Sandbox Code Playgroud)

reprex软件包(v0.3.0)创建于2019-08-27

GKi*_*GKi 7

您可以all.names用来获取通话中使用的所有符号

expr <- quote(a + b * (a / b))
unique(all.names(expr))
#[1] "+" "a" "*" "b" "(" "/"
Run Code Online (Sandbox Code Playgroud)