У меня есть Rscript в script.R
preprocess1 <- function(directory){
setwd(directory)
library(stringi)
library(stringr)
main_dir <- directory
sub_dir <- "preprocess1"
dir.create(file.path(main_dir, sub_dir))
ldf <- list() # creates a list
listlog <- dir(pattern = "*.log") # creates the list of all the log files in the directory
start.time <- Sys.time()
for (i in 1:length(listlog)){
ldf[[i]] <- read.table(listlog[i])
ldf[[i]]$V2 = NULL
ldf[[i]]$V3 = NULL
ldf[[i]]$V5 = NULL
ldf[[i]]$V10 = NULL
ldf[[i]]$V11 = NULL
tmp <- ldf[[i]]$V4
tmp <- stringr::str_sub(tmp, start = 2)
tmpdate = str_sub(tmp,1,11)
tmphours = str_sub(tmp, -8)
ldf[[i]]$date = factor(tmpdate)
ldf[[i]]$hours = factor(tmphours)
ldf[[i]]$V4 = NULL
ldf[[i]] <- ldf[[i]][,c(1,6,7,2,3,4,5)]
filename <- paste(i, ".log", sep="")
write.table(ldf[[i]], file = file.path(main_dir, sub_dir, filename), sep=" ", row.names=FALSE, col.names=FALSE)
}
end.time <- Sys.time()
time.taken <- end.time - start.time
time.taken
setwd(file.path(main_dir, sub_dir))
}
и я хочу запустить этот скрипт на Java с Rserve, вот так
static String dirPath;
public static void main(String[] args) throws IOException, REXPMismatchException, REngineException {
Scanner scanner = new Scanner(System.in );
System.out.println("Enter the file path: ");
dirPath = scanner.nextLine();;
RConnection c = new RConnection();
c.eval("source(\"E:/Data09/script007.R\")");
REXP valueReturned = c.eval("preprocess1(\""+dirPath+"\")");
System.out.println(valueReturned.asString());
}
Я ожидаю, что script.R выполнит свой процесс, когда я введу путь к каталогу файла, который я хочу обработать. Но ошибка заставляет меня застрять, и я не знаю, что мне делать, чтобы ее исправить.
java.net.SocketException: Connection reset
Я уверен, что у меня запущен Rserve() в моем R. Пожалуйста, мне нужна ваша помощь, чтобы закончить мой проект. Спасибо за ваш ответ.
fileio
в конфигурации? См. rforge.net/Rserve/doc.html#conf. - person copeg   schedule 16.08.2016fileio
включен. Я следую инструкциям по запуску Rserve_d.exe, затем запускаю свой java-код, но он все равно перестает работать. - person Ameerah   schedule 17.08.2016org.rosuda.REngine.Rserve.RserveException: eval failed, request status: authorization failed
. Как ты думаешь? Что мне делать тогда? @copeg - person Ameerah   schedule 17.08.2016testMain()
? - person brijs   schedule 17.08.2016R
, используя пакетrserve
, как описано здесь . Убедитесь, чтоfileio
имеет значениеenabled
при запуске, и убедитесь, что ваш брандмауэр ничего не блокирует. Я также предлагаю вам сначала попытаться оценить простой оператор R из вашего кода Java, чтобы убедиться, что Rserver работает правильно, прежде чем подтолкнуть его к выполнению более сложных задач. - person copeg   schedule 18.08.2016