У меня проблема с загрузкой большого набора данных в R из Java.Проблема на самом деле с функцией, которую я использую: re.eval()
.Я хочу загрузить файл в R, чтобы я мог анализировать / манипулировать им в R, однако я хочу сделать это из Java (это для того, чтобы построить GUI).
Я хочу, чтобы функция выполняла синтаксический анализ и оценку предоставленной мною строки, однако функция eval анализирует, оценивает и возвращает результат.Я получаю ошибку нехватки памяти от Java относительно размера кучи.Это код, который у меня есть на данный момент:
JButton getFile = new JButton("Load");
getFile.setBounds(316, 10, 151, 23);
getFile.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
REXP x;
getFileName();
if (dataFilePath != null){
String file = dataFilePath.replace("\\", "\\\\\\\\");
re.eval("data<-read.csv(file='"+file+"', head=TRUE, sep='|')");
x = re.eval("names(data)");
String[] column_names = x.asStringArray();
originalDataLength = column_names.length;
for (int i = 0; i < column_names.length; i++) {
comboBox.insertItemAt(column_names[i], 0);
}
textField.setText("Data Loaded");
}
}
}
);
Этот код работал, когда я работал с кадром данных, который был 13500x220.Новый фрейм данных - 50000x700.Мне также было интересно, что именно происходит в коде выше?Он создан в R и отправлен обратно в Java (т.е. дублирован?).
Любая помощь / комментарии будут с благодарностью.Также я посмотрел описание класса Rosuda Rengine и доступные функции;Я думал, что, возможно, rniEval()
может решить проблему, но я не знаю, как это реализовать.