从 R (Renjin) 中的字符串表达式中获取变量名称

Get variables names from string expression in R (Renjin)

我正在使用 Renjin 评估我的 Java 程序中的 R 公式。基本上,用户在文本字段中键入 R 公式,我希望 R/Renjin 为我进行解析,并 return 该表达式中的变量列表。假设用户输入 a*b,我想要 ["a", "b"] 作为结果。

我查看了 Java 部分的 RParser.parse() 方法。但是当我调用 RParser.getResult() 时,我得到了一个 SEXP 对象,但我没有从中找到获取变量名称的方法。

在R这边,我看了parse(text="a*b")。我可以 eval(),但我也没有找到获取名称的方法。

有什么想法吗?

编辑

在 R 中,可以通过以下方式实现:

> d = getParseData(parse(text="a*b"))
> d$text[which(d$token=="SYMBOL")]
[1] "a" "b"

问题是,当我用 Renjin 运行 时,我得到 Exception in thread "main" org.renjin.eval.EvalException: getParseData() is not currently supported by Renjin

还在寻找中……

函数all.varsall.names将return公式中的所有名称。区别在于 all.names 还包括函数名称,而 all.vars 不包括函数名称。

> f <- y ~ a + sin(b)
> f
y ~ a + sin(b)

> all.vars(f)
[1] "y" "a" "b"

> all.names(f)
[1] "~"   "y"   "+"   "a"   "sin" "b"  

我不知道 Renjin 是否支持这些,但它们是相当基本的。