我使用Renjin来评估我的Java程序中的R公式。基本上用户在文本字段中键入R公式,我希望R / Renjin为我做解析,并返回该表达式中的变量列表。假如用户输入 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
。
仍在寻找...
答案 0 :(得分:1)
函数all.vars
和all.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是否支持这些,但它们是相当基本的。