В настоящее время я использую JRI, пакет Java, чтобы использовать некоторые функции, предоставляемые R.
Скажем, моя команда R выглядит так:
qqnorm(sql_data[["LifeExpectancy"]],
main="Life Expectancy")
Если я помещу это в свою функцию REngine.eval(), она выйдет из строя, потому что я должен ввести всю команду в одну команду "eval()". Однако он работает в моей обычной командной строке R...
Основная проблема в том, что мне трудно предсказать, будет ли следующий заказ разбит на несколько строк или нет. Итак, как я могу решить эту проблему?
Я думал о подсчете скобок, но число скобок не всегда четное. (Допустим, некоторые скобки содержатся в строках) Есть еще идеи?
Редактировать: я думаю, что моя точка зрения недостаточно очевидна. Попробуйте это:
System.out.println(re.eval("a <- c(3,4)"));
System.out.println(re.eval("a"));
System.out.println(re.eval("b <- c(3,4"));
System.out.println(re.eval(",5)"));
System.out.println(re.eval("b"));
Вы увидите, что для первых двух команд a вы получаете
[REAL* (3.0, 4.0)]
[REAL* (3.0, 4.0)]
Но остальное, b, выглядит так:
[NULL ]
[NULL ]
null
Это проблема с R в целом; обычно это работает, но не в JRI!
REngine.eval()
? - person nicola   schedule 21.10.2014REngine.eval()
требуется допустимый оператор R. Почему вы разрываетесь на два или более звонков? Вы пытаетесь прочитать файл.R
построчно и выполняете каждую строку доREngine.eval()
? Если это так, просто вызовитеREngine.eval("source('rfile.R')")
, и скрипт будет выполнен. - person nicola   schedule 21.10.2014