프로그래밍/R

[ R ] Java에서 R 을 써서 wordcloud 나타내기 (Rcaller, wordcloud, Rcode)

Yanoo 2020. 5. 28. 21:04
728x90
반응형

 

  • 아래의 파일을 Java의 Rcaller 라이브러리를 통해 wordcloud를 보여줄 것이다. ( 현재 utf-8형식이라 아래 한글이 깨져보인다)

 

  • 코드
package mongoServer;

import java.io.File;
import java.io.IOException;


import rcaller.RCaller;
import rcaller.RCode;

public class Rtest04 {

	public static void main(String[] args) {
		try {
			RCaller caller=new RCaller();
			caller.setRscriptExecutable("F:/Rdata/R-4.0.0/bin/x64/Rscript.exe");
			RCode code=new RCode();
			code.clear();
			
			
			File file = null;
			file=code.startPlot();
			System.out.println(file);
			
			code.addRCode("library(usethis)");
			code.addRCode("library(devtools)");
			code.addRCode("library(KoNLP)");
			code.addRCode("library(multilinguer)");
			code.addRCode("library(RColorBrewer)");
			code.addRCode("library(wordcloud)");
			code.addRCode("library(stringr)");
			
			
			code.addRCode("request<-read.csv(\"F://mongtcsv.csv\", header = FALSE, stringsAsFactors = FALSE,fileEncoding = \"utf-8\")");
			code.addRCode("sampledata<-request$V1[1:700]");
			code.addRCode("data_list<- list()");
			code.addRCode("for(i in 1:length(sampledata)){data<-SimplePos09(sampledata[i]); data_list[[i]]<-data}");
			code.addRCode("unlist<-unlist(data_list)");
			code.addRCode("wordlist<-sapply(str_split(unlist,\"/\"),function(x){x[1]})");
			code.addRCode("tablewordlist<- table(wordlist)");
			code.addRCode("sort(tablewordlist,decreasing = T)[1:100]");
			code.addRCode("tablewordlist_result<-tablewordlist[nchar(names(tablewordlist))>1]");
			code.addRCode("tablewordlist_result<-sort(tablewordlist_result,decreasing = T)[1:100]");
			code.addRCode("word<-names(tablewordlist_result)");
			code.addRCode("count<-as.numeric(tablewordlist_result)");
			code.addRCode("mycolor<-brewer.pal(n=11,name =\"Set1\")");
			code.addRCode("wordcloud(words = word,freq = count,random.order = F,colors = mycolor)\r\n");
			
			code.endPlot();
			caller.setRCode(code);
			caller.runOnly();
			code.showPlot(file);
			

			
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} 
	}

}

Rcode를 써서 R에 코드 입력하는 듯이 입력하면 된다.

 

  • 결과

 

느낀점 : 먼저 R을 통해 결과를 확인한 후에 자바에서 처리한다. ( R의 name과 같은 출력 함수를 자바에서 입력하면 무한루프를 도는것 같다)

728x90
반응형