■
warnOnlyだと,nlsの返り値がないため,summaryするとエラーが出る.
そこでtry関数を使って,とりあえず値があるかチェックしておいて,
class( )で内容に"try-error"が含まれていたら,ループを飛ばすなどする.
for(j in j1:jn){ y2 <- c[(n+2):j] x2 <- seq(1,length(y2),1) dat <- data.frame(x2,y2) tmp2 <- try(nls(y2~(b/(1-a))*((x2)^(1-a)-1)+d*(x2-1),dat, start=list(a=0.7,b=y2[1],d=y1[1]),control=list(warnOnly=FALSE))) if( class(tmp2) == "try-error" ) next res2 <- summary(tmp2) }
無事に終了したときには,classs(tmp2)の値は"nls"となり,通常通り処理ができる.
参考