[R] Trap an error from a function
Duncan Murdoch
murdoch.duncan at gmail.com
Wed Sep 19 02:33:52 CEST 2012
On 12-09-18 8:10 PM, John Sorkin wrote:
> Window 7
> R 2.15
>
> I am writing a simulation which generates sample sized estimates from simulated data. When I run the function shown below,
> power.t.test(delta=14.02528,sd=1.945226,power=0.8,sig.level=0.05)
>
> I get an error message:
>
>> power.t.test(delta=14.02528,sd=1.945226,power=0.8,sig.level=0.05)
> Error in uniroot(function(n) eval(p.body) - power, c(2, 1e+07)) :
> f() values at end points not of opposite sign
>
> The fact that the function can not return a sample size is OK, however I need to trap the error and set the sample size equal to NA. How do I trap the error so that when the error occurs I can set sample size equal to NA?
You can wrap the call in try(). Then check whether the result inherits
from try-error, e.g.
res <- try( ... )
if (inherits(res, "try-error")) { do something to handle the error }
else { proceed as you would with no error }
In the example you gave, the problem is that even a sample size of 2
gives more than 0.8 power. The function should probably check for that
case, but it doesn't.
Duncan Murdoch
More information about the R-help
mailing list