Я установил JRI для работы с NetBeans 7.4 с использованием 32-разрядных R 3.0.2 и Java jdk1.7.0_45 в Windows 7.
Я использую следующий код 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
Вы должны проверить свой каталог "lib" в каталоге ....\R\win-library\3.0.2
и проверьте, можете ли вы обрезать пакет mgcv
, если нет, загрузите его снова в свою версию R
Один из вариантов заключается в том, что вы загрузили эту библиотеку в более раннюю версию R.