java - gamm() 函数在 JRI 中失败

标签 java r jri

我已安装 JRI,以便在 Windows 7 上使用 32 位 R 3.0.2 和 Java jdk1.7.0_45 与 NetBeans 7.4 一起运行。

我正在使用以下 Java 代码

     REXP load=re.eval("source('C:\\\\SearchPath\\\\gammaDistAnova.r')");
     String errStr=load.asString();
     REXP stats=re.eval("gammaDistAnova.getStats(ref, target)");

调用以下 R 脚本。

gammaDistAnova.getStats<-function(ref, target){
  library("MASS") # Library containing fitdistr
  library("mgcv")
  library("stats")

  # Get mean and SD of reference
  gr=fitdistr(ref+0.00001,"gamma")  # Ref is a vector of (reference) values.  The     0.00001 is to prevent errors due to zero values
  meanRef<-gr[1]$estimate['shape']/gr[1]$estimate['rate']  # Mean of ref vector  
  SDref<-sqrt(gr[1]$estimate['shape']/(gr[1]$estimate['rate']^2)) # SD of ref vector

  # Get mean and SD of target
  gt=fitdistr(target+0.00001,"gamma")  # target is a vector of (target) values.  The 0.00001 is to prevent errors due to zero values
  meanTarget<-gt[1]$estimate['shape']/gt[1]$estimate['rate']  # Mean of target vector  
  SDTarget<-sqrt(gt[1]$estimate['shape']/(gt[1]$estimate['rate']^2)) # SD of target vector

  # Analysis of variance between the distributions
  n=300
  x=rgamma(n, shape=gr[1]$estimate['shape'], scale=1/gr[1]$estimate['rate'])
  y=rgamma(n, shape=gt[1]$estimate['shape'], scale=1/gt[1]$estimate['rate'])
  random1 <- sample(c("level1","level2","level3"), n, replace=TRUE)
  debug=list(random1 = ~1)
#  glmm1 <- gamm(y ~ x, random=list(random1 = ~1))
#  anova(glmm1$gam)

  out=list("refMean"=meanRef, "refSD"=SDref, "targetMean"=meanTarget, "targetSD"=SDTarget, "lx"=length(x), "ly"=length(y))
  out
}

一切都运行良好(列表中返回的所有内容似乎都有效并且符合我的预期),直到我取消注释

glmm1 <- gamm(y ~ x, random=list(random1 = ~1))

在这种情况下,函数返回 null,表示失败。

虽然该函数在 JRI 中失败,但在 RStudio 版本 0.98.501 上运行没有任何问题。

编辑:

我试过了

  glmm1 <- gamm(y ~ x, random=list(random1 = ~1))
  errStr=geterrmessage()
  errStr

但是

 re.eval("gammaDistAnova.getStats(ref, target)");

仍然返回null

最佳答案

您应该检查 ....\R\win-library\3.0.2 中的“lib”目录

并检查是否可以获取mgcv包,如果不能,请重新下载到您使用的R版本中

一种选择是您将此库下载到早期版本的 R 中。

关于java - gamm() 函数在 JRI 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22865577/

相关文章:

java - 'SRPy' 在 Mockito 文档中代表什么

java - Spring Data JPA findAllBy ... in ... orderBy 输入列表

java - 如何将附加 R 库加载到 JRI 中并从 Java 执行?

java - REXP as List 不返回输出

java - getAnnotations() 为空

java - 连字符在 Android 中被奇怪的字符取代

r - 识别 R 函数和脚本的依赖关系

r - 如何在不考虑顺序的情况下查找字符串是否包含某些字符?

r - 使用 R 中的 plm 函数进行预测

java - 使用 JRI 赋值时出现奇怪的行为