2016-03-29 7 views
0
benötigt

ich versuche gefunden Leistungswert mit fzero Funktion in R mit myfunction durch die folgende Art und Weise unter Verwendung von:Fehler bei fzero in R-Wert fehlen, wo WAHR/FALSCH

myfunction = function(delta,data,cv){ 
if(mean(data^delta)!=0) 
y=cv-sd((data^delta),na.rm=TRUE)/mean((data^delta),na.rm=TRUE) 
return(y)} 
b=repmat(NaN,12,Nest) 
for (m in 1:12) { 
     if (m==1) 
       indDates=which(is.element(month, c(12, 1, 2))) 
     else if (m==12) 
       indDates=which(is.element(month, c(11, 12, 1))) 
     else 
       indDates=which(is.element(month, c(m-1, m, m+1))) 
     cvO=apply(prO[indDates,],2,sd,na.rm=TRUE)/colMeans(prO[indDates,], na.rm=TRUE) 
     for (i in 1:Nest) { 
       if (!is.na(cvO[i])) 
         b[m,i]=fzero(function(x) myfunction(x,abs(prM[indDates,i]),cvO[i]),1) 
     } 
} 

Aber ich bekomme die folgende Fehlermeldung: Fehler in if (fb == 0) return (Liste (x = b, fval = fb)): fehlender Wert wo TRUE/FALSE benötigt Ich verstehe nicht, was die Sache ist und wie ich es beheben sollte? Könnte mir jemand helfen?

+0

welches Paket dieser fzero Funktion her? –

+0

Ich habe {pracma} Paket verwendet. – Beata

+0

Ihr Code enthält anscheinend ein Objekt, Nest, das in Ihrem Beispiel nicht definiert ist. Bitte stellen Sie sicher, dass das Beispiel vollständig reproduzierbar ist. – ulfelder

Antwort

0

Finaly, kann ich diese Angelegenheit durch die folgende Weise lösen:

date=DatevecV(t1) % t1 are time values from netCDF file 
ndata=nrow(prO) 
Nest=ncol(prO) 
b=repmat(NaN,12,Nest) 
month=unlist(date[2]) 

varCoeficient = function(delta,data,cv){ 
y=cv-sd((data^delta),na.rm=TRUE)/mean((data^delta),na.rm=TRUE) 
return(y)} 

for (m in 1:12) { 
     if (m==1) 
       indDates=which(is.element(month, c(12, 1, 2))) 
      else if (m==12) 
        indDates=which(is.element(month, c(11, 12, 1))) 
      else 
       indDates=which(is.element(month, c(m-1, m, m+1))) 
      cvO=apply(prO[indDates,],2,sd,na.rm=TRUE)/colMeans(prO[indDates,], na.rm=TRUE) 
for (i in 1:Nest) { 
    if (!is.na(cvO[i])) { 
    bi <- try(fzero(function(x) 
varCoeficient(x,abs(prM[indDates,i]),cvO[i]),1),silent=T) 
    if ("try-error" %in% class(bi)) { # an error occurred 
     b[m,i] <- NA 
    } else { 
     b[m,i] <- bi$x 
    } 
    } 
} 
}