2017-07-12 18 views
0

私はRenjinを使ってJavaプログラムからR式を評価しています。基本的に、ユーザーはテキストフィールドにR式を入力しています.R/Renjinに解析を依頼して、その式の変数リストを返します。ユーザーがa * bを入力した場合は、結果として["a", "b"]が必要です。R(Renjin)の文字列式から変数名を取得

Java部分のRParser.parse()メソッドを調べました。しかし、私がRParser.getResult()と呼ぶと、SEXPというオブジェクトがあります。このオブジェクトから、変数名を取得する方法が見つかりませんでした。

R側では、parse(text="a*b")を見ました。私はeval()それをすることができますが、私はどちらかの名前を取得する方法を見つけることができませんでした。

アイデア? Rから

EDIT

、それはでこれを達成することが可能です:

> 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を取得し、です。

まだ見

...

答えて

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がこれらをサポートしているかどうかわかりませんが、かなり基本的です。

関連する問題