【问题标题】:How can I list all symbols used in a call?如何列出通话中使用的所有符号?
【发布时间】:2019-12-31 09:46:45
【问题描述】:

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

我找到了以下方法,但肯定有更惯用或更有效的方法吗?

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 年 8 月 27 日创建

【问题讨论】:

    标签: r metaprogramming


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2022-11-12
      • 1970-01-01
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 2020-10-29
      • 2017-03-24
      • 1970-01-01
      • 2012-02-06
      相关资源
      最近更新 更多