2017-07-12 5 views
0

J'utilise Renjin pour évaluer les formules R de mon programme Java. Fondamentalement, l'utilisateur tape une formule R dans un champ de texte, et je veux que R/Renjin fasse l'analyse pour moi, et renvoie une liste des variables dans cette expression. Dites si l'utilisateur entre a * b, je veux ["a", "b"] comme résultat.Récupère les noms de variables de l'expression de chaîne dans R (Renjin)

J'ai regardé la méthode RParser.parse() sur la partie Java. Mais quand j'appelle alors RParser.getResult() j'obtiens un objet SEXP dont je n'ai pas trouvé le moyen d'obtenir les noms des variables. Sur le côté R, j'ai examiné parse(text="a*b"). Je peux le faire, mais je n'ai pas trouvé un moyen d'obtenir les noms non plus.

Des idées?

EDIT

De R, il est possible d'y parvenir avec:

> d = getParseData(parse(text="a*b")) 
> d$text[which(d$token=="SYMBOL")] 
[1] "a" "b" 

Le problème est, quand je le lance avec Renjin, je reçois Exception in thread "main" org.renjin.eval.EvalException: getParseData() is not currently supported by Renjin.

Toujours à la recherche ...

Répondre

1

Les fonctions all.vars et all.names retourneront tous les noms dans une formule. La différence est que all.names inclut également des noms de fonctions, alors que all.vars les exclut. Je ne sais pas si Renjin les supporte, mais ils sont assez basiques.