Это будет трудно скопировать, потому что я использую пакет R Монте-Карло для вызова подпрограммы Fortran в RStudio, и я не включаю эту подпрограмму здесь, потому что она сложная.В любом случае, мой код, приведенный ниже, завершается с ошибкой перед входом в эту подпрограмму (я думаю).Вот код:
#####Monte Carlo
rsentTinitial=10
rTinitial=15
res_presets = character(0)
res_presets[1] = 'win'
res_presets2 = eval(parse(text = "res_presets[1]", encoding = "UTF-8"))
noquote(res_presets2)
ntimestep<-c(264)
mySENSRange2 <- function(irflag,rricomp,rrrandom,res_presets2,rtairsent2, rtairback2, irrtimestep) {
if (!is.loaded('rwrapper')) {
dyn.load("rwrapper.so")
}
retvals <- .Fortran("RSENSRANGE",irflag = as.integer(irflag), icomp = as.integer(rricomp),
rCOUPLEVAR = as.numeric(rrrandom), noquote(res_presets2), rtairsent2 = as.array(rtairsent2[1:ntimestep]),
rtairback2 = as.array(rtairback2[1:ntimestep]),irrtimestep = as.integer(irrtimestep))
rmonteresult<-return(list("sentTemps"=retvals$rtairsent2,"CalcTemps"=retvals$rtairback2, "Timesteps"=retvals$irrtimestep))
}
library(MonteCarlo)
irflag_grid<-c(1)
rricomp_grid<-c(1) #Hardwiring for now
rrrandom_grid<-seq(1,2,0.2)
res_presets2_grid<-c(noquote(res_presets2))
rtairsent_grid<-c(data.frame(matrix(1: ntimestep),rsentTinitial))
names(rtairsent_grid)<-c("Timestep","AirTemp")
rtairback_grid<-c(data.frame(matrix(1:ntimestep),rTinitial))
names(rtairback_grid)<-c("Timestep","AirTemp")
irrtimestep_grid<-c(ntimestep)
param_list=list("irflag"=irflag_grid, "rricomp"=rricomp_grid, "rrrandom"=rrrandom_grid,"res_presets2"=as.character(noquote(res_presets2_grid)),
"rtairsent2"=rtairsent_grid$AirTemp[1:ntimestep],"rtairback2"=rtairback_grid$AirTemp[1:ntimestep],"irrtimestep"=irrtimestep_grid)
monteResult<-MonteCarlo(func=mySENSRange2, nrep=20, param_list=param_list, ncpus=1)
df<-MakeFrame(list(CalcTemps,sentTemps,Timesteps))
и вот ошибки:
Error in func(irflag = param_list[[1]][1], rricomp = param_list[[2]][1], :
NA/NaN/Inf in foreign function call (arg 5)
А также из последней строки кода (строка Makeframe) я получаю это:
Error in MakeFrame(list(CalcTemps, sentTemps, Timesteps)) :
object 'CalcTemps' not found
Для первой ошибки кажется, что у меня может быть NaN или что я где-то делю на ноль, но я просто не могу этого увидеть.Будем очень благодарны за любые предположения о том, что может пойти не так.Благодаря.