0

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

我查看RParser.parse()了 Java 部分的方法。但是当我打电话时,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.

还在找……</p>

4

1 回答 1

1

函数all.varsall.names将返回公式中的所有名称。不同之处在于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 是否支持这些,但它们是相当基本的。

于 2017-07-12T13:06:17.517 回答