【发布时间】:2017-05-30 13:27:39
【问题描述】:
我已经为这个问题苦苦挣扎了几天,找不到解决方法。
我有一个运行良好的 R 脚本,我想从 Java 访问它,但是当我获取 R 脚本时,它无法在 R 中包含包并且它无法识别其中的函数。为什么会这样?如果你们中有人知道为什么会发生这种情况,我将不胜感激。
这是我用来调用R的java代码...
public static void main(String a[]) throws Exception {
System.out.println("result="+StartRserve.checkLocalRserve());
RConnection c = null;
try {
/* Create a connection to Rserve instance running on default port
* 6311
*/
c = new RConnection();
c.eval("source(\"C:/mypath/myFunction\")");
RList result = c.eval("myFunction("+args+")").asList();
... more code that fails to execute ....
String processName = "Rserve.exe";
if (isProcessRunning(processName)) {
killProcess(processName);
}
c.close();
}//Fin del Try
catch (RserveException e) {
String processName = "Rserve.exe";
if (isProcessRunning(processName)) {
killProcess(processName);
}
e.printStackTrace();
}
catch (REXPMismatchException e) {
e.printStackTrace();
}
}
}
这是我从 JAVA 调用的 R 脚本...
myFunction=function(args){
require('ROracle')
require('DBI')
require('janitor')
source("mypath/functions.R")
source("mypath/queries.R")
aa <- c(1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,1,2,3,4,5,1,2,3)
bb <- tabyl(aa)
..... More code comes here but it Fails already ...
}
[R ERROR]:tabyl(aa) 中的错误:找不到函数“tabyl”
tabyl 函数来自 library('janitor'),但它基本上无法导入任何库。
为什么没有导入库?
提前致谢。
【问题讨论】:
-
tabyl 应该从哪里来?
-
它来自 janitor 包,但无论如何......它在那里失败,因为是第一个被引用的函数......如果我删除它会说“找不到函数”dbDriver“ " 来自 ROracle 库...最终无法导入所有这些...
-
如果你在代码中尝试
bb <- janitor::tabyl(aa)会发生什么?即使未加载包,这也应该有效。 -
[R ERROR]: Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) : there is no package called 'dplyr我明白了...我觉得 libPaths() 有问题,但不知道如何解决 -
好的,我终于弄清楚发生了什么...我会发布一个答案,以防它可以帮助遇到类似问题的其他人。
标签: java r packages libraries rserve