Чтение в файле csv в R из Java (с использованием JRI)

Я хочу загрузить файл csv в R из Java с помощью JRI. По какой-то причине, когда я пытаюсь это сделать, программа завершается и не возвращает ни ошибки, ни результата. Вот мой код:

REXP x;
x = re.eval("data<-read.csv(file='C:\\data.csv', head=TRUE, sep=',')");
x = re.eval("data<-data$VALUE");
System.out.println(x);

Как я уже сказал, ничего не происходит, программа просто завершается. Я знаю, что есть соединение, и программа завершает работу из-за загрузки файла csv, так как работает следующий код:

REXP x;
re.eval("x<-c(10,20,30,50)");
x = re.eval("x<-x+15");
double[] test = x.asDoubleArray();
System.out.println(test[0]);
re.end();

В итоге 25! просто для дополнительной информации я установил переменные среды, PATH, R_INCLUDE_DR, R_SHARE_DR, R_DOC_DR.

Заранее спасибо,

Аран


person Aran Brady    schedule 21.09.2011    source источник
comment
Я отладил его, и ошибка: Ошибка: '\D' - это нераспознанный escape в строке символов, начинающейся с C:\D   -  person Aran Brady    schedule 21.09.2011
comment
Опубликуйте это как ответ и примите его как правильный ответ для полноты.   -  person Roman Luštrik    schedule 21.09.2011
comment
Я только что опубликовал этот ответ 2 дня назад по адресу stackoverflow.com/questions/7469260/ . Аран, ты что, свои вопросы не читаешь?   -  person Carl Witthoft    schedule 21.09.2011


Ответы (2)


Как упомянул Карл, он затронул эту проблему в другом посте. Проблема в том, что «\» является escape-символом как в R, так и в Java (для Windows), поэтому при передаче команды из java в R вам нужно несколько обратных косых черт, а не два обычных.

person Aran Brady    schedule 12.12.2011

В R studio я пишу так:

yangzhou<-read.csv("D:\\r-workspace\\yangzhou0715.csv")

А в Java пробовал много раз, когда писал вот так, работало нормально:

rc.eval("yangzhou<-read.csv('D:\\\\\\\\r-workspace\\\\\\\\yangzhou0715.csv')");

ВНИМАНИЕ: есть 8 обратных слэшей

person Huang    schedule 09.09.2020