Как решить «Ошибка: длинные векторы еще не поддерживаются: qap_encode.c: 36»? - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь соединить Java с R, используя Rserve

Java: 1.8.0_151
R: 3.5.0
ОС: Mac 10.13.4 HighSierra

Для подключенияR с Java, я набрал следующее на RStudio

install.packages("Rserve")
library(Rserve)
Rserve(args="--no-save")

все прошло гладко, и я был очень рад этому.

Затем я вернулся к Java (так сказать, Java Eclipse) ипродолжал печатать.Вот что я сделал на Eclipse

package rserve;

import org.rosuda.REngine.REXPMismatchException;
import org.rosuda.REngine.REngineException;
import org.rosuda.REngine.Rserve.RConnection;
import org.rosuda.REngine.Rserve.RserveException;

public class WordCloud1 {
    public static void main(String[] args) throws REngineException, 
REXPMismatchException {
    RConnection c = new RConnection();
    String path = "/Users/JinhoShin/Desktop/study/R/r_temp2";
    String file = "seoul_new.txt";
    c.parseAndEval("library(KoNLP)");
    c.parseAndEval("useSejongDic()");
    c.parseAndEval("library(wordcloud)");
    c.parseAndEval("library(RColorBrewer)");
    c.parseAndEval("setwd('" + path + "')");
    c.parseAndEval("data1=readLines('" + file + "')");
    c.parseAndEval("data2 = sapply(data1,extractNoun,USE.NAMES=F)");
    c.parseAndEval("data3 = unlist(data2)");
    c.parseAndEval("data3=gsub('seoul','',data3)");
    c.parseAndEval("data3=gsub('request','',data3)");
    c.parseAndEval("data3=gsub('place','',data3)");
    c.parseAndEval("data3=gsub('transportation','',data3)");
    c.parseAndEval("data3=gsub(' ','',data3)");
    c.parseAndEval("data3=gsub('-','',data3)");
    c.parseAndEval("data3=gsub('OO','',data3)");
    c.parseAndEval("write(unlist(data3),'seoul_2.txt')");
    c.parseAndEval("data4 = read.table('seoul_2.txt')"); ########this is what blows me up
    c.parseAndEval("wordcount=table(data4)");
    c.parseAndEval("palete = brewer.pal(9,'Set3')");
    c.parseAndEval(
            "wordcloud(names(wordcount),freq = wordcount,scale=c(5,1),rot.per=0.25, min.freq = 1," + 
            " random.order=F, random.color = T, colors=palete)");
    c.parseAndEval("savePlot('0517seoul.png', type = 'png')");
    c.parseAndEval("dev.off()");
    c.close();
}
}

, как вы заметили из кода

 c.parseAndEval("data4 = read.table('seoul_2.txt')"); => at rserve.WordCloud1.main(WordCloud1.java:30)

Я понятия не имею, почему он не может прочитать мой текстовый файл, несмотря на то, чтоон может записать этот файл.

Это то, что консоль Java Eclipse постоянно показывает мне

Exception in thread "main" org.rosuda.REngine.REngineException: eval failed
    at org.rosuda.REngine.Rserve.RConnection.parseAndEval(RConnection.java:499)
    at org.rosuda.REngine.REngine.parseAndEval(REngine.java:108)
    at rserve.WordCloud1.main(WordCloud1.java:30)
Caused by: org.rosuda.REngine.Rserve.RserveException: eval failed
    at org.rosuda.REngine.Rserve.RConnection.eval(RConnection.java:261)
    at org.rosuda.REngine.Rserve.RConnection.parseAndEval(RConnection.java:497)
    ... 2 more

, и это то, что RStudio постоянно показывает мне

Error: long vectors not supported yet: qap_encode.c:36
Fatal error: unable to initialize the JIT

Я попробовал всеЯ мог бы решить эту проблему, но все же я на том же месте.

...