gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:38:13 30 4
gpt4 key购买 nike

我正在使用 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 current support by Renjin

仍在寻找...

最佳答案

函数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 是否支持这些,但它们相当基本。

关于java - 从 R (Renjin) 中的字符串表达式获取变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45055280/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com