2016-11-02 4 views
0

Попытка использовать R «ы tryCatch на установку лог-логистической кривой в данных доза-ответ:Использование R в tryCatch

df <- data.frame(dose=c(10,0.62,2.5,0.16,0.039,0.0024,0.0098,0.00061,10,0.62,2.5,0.16,0.039,0.0024,0.0098,0.00061,10,0.62,2.5,0.16,0.039,0.0024,0.0098,0.00061), 
       viability=c(22,79,100,61,100,87,75,51,6.5,37,100,100,90,100,42,41,5,100,13,100,91,100,95,100), 
       stringsAsFactors = F) 

с drc» ы drm функции, используя этот код:

library(drc) 
fit <- tryCatch(
    { 
    drm(viability~dose,data=df,fct=LL.4(names=c("slope","low","high","ED50"))) 
    }, 
    error=function(cond){ 
    return(NA) 
    }, 
    warning=function(cond){ 
    return(NA) 
    }, 
    finally={ 
    } 
) 

Я получаю:

> fit 
[1] NA 

Однако, когда я пытаюсь без tryCatch нет никаких проблем:

> drm(viability~dose,data=df,fct=LL.4(names=c("slope","low","high","ED50"))) 

A 'drc' model. 

Call: 
drm(formula = viability ~ dose, data = df, fct = LL.4(names = c("slope",  "low", "high", "ED50"))) 

Coefficients: 
slope:(Intercept) low:(Intercept) high:(Intercept) ED50:(Intercept) 
      1.498   -163.577    81.031    18.481 

Am Я не использую tryCatch правильно?

ответ

2

Вы используете tryCatch правильно. Ваш код выдает предупреждение. Я изменил код, чтобы вернуть ошибку или предупреждение:

fit <- tryCatch(
    { 
    drm(viability~dose,data=df,fct=LL.4(names=c("slope","low","high","ED50"))) 
    }, 
    error=function(cond){ 
    return(cond) 
    }, 
    warning=function(cond){ 
    return(cond) 
    }, 
    finally={ 
    } 
) 

и теперь работает fit показывает, что drm бросает предупреждение:

> fit 
<simpleWarning in log(dose/parmMat[, 4]): NaNs produced> 
Смежные вопросы