Как написать CSV и сохранить его в виде строки в JRI?

Я ищу способ сохранить текст в формате CSV в строку в JRI (интерфейс Java/R). В настоящее время единственным известным мне способом записи CSV-файлов является:

write.csv(MyData, file = "MyData.csv")

Который форматирует MyData в CSV и записывает его в файл CSV. Однако мое приложение не использует файлы, поэтому мне нужно установить вывод write.csv в переменную, а не в файл.

Я попробовал этот фрагмент кода, который, согласно документации, просто форматирует data.frame в строку.

REXP s = Rutils.rengine.eval("write_csv(foo, sep = ',', quote = TRUE, row.names = FALSE, col.names = FALSE)");
System.out.println(s);

будучи Rutils классом, в котором я храню свои Rengine и foo фрейм данных, который я пытаюсь отформатировать (который содержит правила ассоциации, извлеченные из функции arules' apriori.

Однако я получаю null в качестве вывода каждый раз, когда запускаю файл.

Есть ли способ сделать это?


person xvlaze    schedule 11.04.2019    source источник
comment
Я хочу записать в строковую переменную Я не понимаю, что это значит. Можете ли вы уточнить?   -  person Maurits Evers    schedule 11.04.2019
comment
Мне нужно установить вывод write.csv в переменную, а не в файл Извините, это все еще не ясно для меня. write.csv записывает содержимое data.frame в файл. data.frame — это ваш объект R. Возможно, вам следует предоставить более репрезентативный пример кода, демонстрирующий, что вы пытаетесь сделать.   -  person Maurits Evers    schedule 11.04.2019
comment
Итак, для вашего примера вы можете сделать csv_content <- capture.output(write.csv(MyData, file = stdout()))   -  person amatsuo_net    schedule 11.04.2019
comment
@MauritsEvers Отредактировал вопрос, добавив еще немного кода.   -  person xvlaze    schedule 11.04.2019
comment
@amatsuo_net Это не работает. Я все еще получаю null в своем выводе Java.   -  person xvlaze    schedule 11.04.2019
comment
Тогда как насчет Rutils.rengine.eval("capture.output(write.csv(MyData, file = stdout()))"); System.out.println(s)?   -  person amatsuo_net    schedule 11.04.2019
comment
@amatsuo_net null тоже. :(   -  person xvlaze    schedule 11.04.2019
comment
У меня нет среды для тестирования, но REXP s = Rutils.rengine.eval("capture.output(write.csv(MyData, file = stdout()))"); System.out.println(s.asString()); по-прежнему не работает?   -  person amatsuo_net    schedule 11.04.2019