Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从R(Renjin)中的字符串表达式获取变量名称_Java_R_Parsing_Eval_Renjin - Fatal编程技术网

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

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,但是我也没有找到一种方法来获取名称 有

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

我查看了Java部分的
RParser.parse()
方法。但是当我调用then
RParser.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”
我不知道人人网是否支持这些,但它们相当基本