Java 从R(Renjin)中的字符串表达式获取变量名称
我正在使用Renjin计算Java程序中的R公式。基本上,用户在文本字段中键入一个R公式,我希望R/Renjin为我进行解析,并返回该表达式中的变量列表。假设用户输入a*b,我希望结果是Java 从R(Renjin)中的字符串表达式获取变量名称,java,r,parsing,eval,renjin,Java,R,Parsing,Eval,Renjin,我正在使用Renjin计算Java程序中的R公式。基本上,用户在文本字段中键入一个R公式,我希望R/Renjin为我进行解析,并返回该表达式中的变量列表。假设用户输入a*b,我希望结果是[“a”,“b”] 我查看了Java部分的RParser.parse()方法。但是当我调用thenRParser.getResult()时,我得到了一个SEXP对象,我没有从中找到获取变量名称的方法 在R端,我查看了parse(text=“a*b”)。我可以eval()it,但是我也没有找到一种方法来获取名称 有
[“a”,“b”]
我查看了Java部分的RParser.parse()
方法。但是当我调用thenRParser.getResult()
时,我得到了一个SEXP
对象,我没有从中找到获取变量名称的方法
在R端,我查看了parse(text=“a*b”)
。我可以eval()
it,但是我也没有找到一种方法来获取名称
有什么想法吗
编辑
从R开始,可以通过以下方式实现:
> d = getParseData(parse(text="a*b"))
> d$text[which(d$token=="SYMBOL")]
[1] "a" "b"
问题是,当我使用Renjin运行它时,我在线程“main”org.Renjin.eval.EvalException中得到了异常:Renjin当前不支持getParseData()
仍在查找…函数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"
>f
y~a+sin(b)
>所有变量(f)
[1] “y”“a”“b”
>所有.姓名(f)
[1] “~”“y”“+”“a”“sin”“b”
我不知道人人网是否支持这些,但它们相当基本