从java发送字符串到R

时间:2015-04-07 06:21:08

标签: java linux r string putty

我想从我正在运行的java程序中取一个字符串并将该字符串发送到我编写的R程序,以便为学校项目进行一些DNA分析。

inputvec <- vector() #Variable to hold entire sequence
codonSeparator <- vector() #Vector to hold created substrings(codons)
sequences <- matrix()

file =&#34; DNA.txt&#34;将替换为从java程序中获取文件名的变量。

inputVec <- scan(file = "DNA.txt", what = "character", sep = "", blank.lines.sk$
inputVec <- toupper(inputVec)                   #change sequence string into al$
inputVec <- paste(inputVec, sep="", collapse="")      #incase of extra lines, d$
codonSeparator <- substring(inputVec, seq(1,nchar(inputVec),3),seq(3,nchar(inpu$

counter <- 0
maxLen <- 0
bool <- FALSE



for(i in 1:length(codonSeparator)){
 if(codonSeparator[i] == "TAC"){bool = TRUE}
        if(bool == TRUE){
                counter <- counter + 1
        }
        if(codonSeparator[i] == "ACG"){
                bool <- FALSE
                if(counter > maxLen){maxLen <- counter}
                counter <- 0
        }
}

lst <- list()
seqHolder <- rep(NA, maxLen)
holderCount <- 1
rCount <- 1

for(i in 1:length(codonSeparator)){
        if(codonSeparator[i] == "TAC"){bool = TRUE}
        if(bool == TRUE){
                seqHolder[holderCount] <- codonSeparator[i]

 }
        if(codonSeparator[i] == "ACG"){
                if(bool){
                        lst[rCount] <- list(seqHolder)
                        seqHolder <- rep(NA, maxLen)
                        rCount <- rCount + 1
                }
                bool <- FALSE
                holderCount <- 1
        }
 if(bool == TRUE){holderCount <- holderCount + 1}
}

sequences <- do.call(rbind,lst)

我将基本上调用此代码并从我创建的java程序中发送字符串。我怎样才能调用R程序并从java发送一个字符串?我也是通过puTTY在linux服务器上运行这些程序。

2 个答案:

答案 0 :(得分:1)

使用名为socket s的好概念。使用套接字,您可以在两个程序之间发送数据。以下是一些消息来源:

或者,您可以尝试更好的东西:Redis发布/发布机制。资源:

答案 1 :(得分:0)

我建议使用通讯库来耦合您的程序,zeromqnanomsg

它们都有java和R绑定。