如何列出通话中使用的所有符号?
How can I list all symbols used in a call?
我想列出通话中使用的所有符号或名称。
我找到了以下方法,但肯定有更惯用或更有效的方法吗?
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]]
#> `/`
由 reprex package (v0.3.0)
于 2019-08-27 创建
您可以使用all.names
获取调用中使用的所有符号:
expr <- quote(a + b * (a / b))
unique(all.names(expr))
#[1] "+" "a" "*" "b" "(" "/"
我想列出通话中使用的所有符号或名称。
我找到了以下方法,但肯定有更惯用或更有效的方法吗?
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]]
#> `/`
由 reprex package (v0.3.0)
于 2019-08-27 创建您可以使用all.names
获取调用中使用的所有符号:
expr <- quote(a + b * (a / b))
unique(all.names(expr))
#[1] "+" "a" "*" "b" "(" "/"