In my opinion the try and tryCatch commands are written and documented rather 
poorly. Thus I am not sure what to program exactly.

For instance, I could query mod.poly3 and use an if/then statement to proceed, 
but querying mod.poly3 is weird. For instance, here's the output when it fails:

> mod.poly3 <- try(lrm(x[,2] ~ pol(x1, 3) + pol(x2, 3), data=x))
Error in fitter(X, Y, penalty.matrix = penalty.matrix, tol = tol, weights = 
weights,  : 

  NA/NaN/Inf in foreign function call (arg 1)
> mod.poly3
[1] "Error in fitter(X, Y, penalty.matrix = penalty.matrix, tol = tol, weights 
= 
weights,  : \n  NA/NaN/Inf in foreign function call (arg 1)\n"
attr(,"class")
[1] "try-error"

...and here's the output when it succeeds:
> mod.poly3 <- try(lrm(x[,1] ~ pol(x1, 3) + pol(x2, 3), data=x))
> mod.poly3

Logistic Regression Model

lrm(formula = x[, 1] ~ pol(x1, 3) + pol(x2, 3), data = x)


Frequencies of Responses
bagels donuts 
    10      5 

       Obs  Max Deriv Model L.R.       d.f.          P          C 
        15      4e-04       3.37          6     0.7616       0.76 
       Dxy      Gamma      Tau-a         R2      Brier          g 
      0.52       0.52      0.248      0.279      0.183      1.411 
        gr         gp 
       4.1      0.261 

          Coef     S.E.    Wald Z P     
Intercept -5.68583 5.23295 -1.09  0.2772
x1         1.87020 2.14635  0.87  0.3836
x1^2      -0.42494 0.48286 -0.88  0.3788
x1^3       0.02845 0.03120  0.91  0.3618
x2         3.49560 3.54796  0.99  0.3245
x2^2      -0.94888 0.82067 -1.16  0.2476
x2^3       0.06362 0.05098  1.25  0.2121

...so what exactly would I query to design my if/then statement?




________________________________
From: David Winsemius <dwinsem...@comcast.net>
To: David Winsemius <dwinsem...@comcast.net>

Sent: Tue, July 13, 2010 9:09:04 AM
Subject: Re: [R] Continuing on with a loop when there's a failure


On Jul 13, 2010, at 9:04 AM, David Winsemius wrote:

> 
> On Jul 13, 2010, at 8:47 AM, Josh B wrote:
> 
>> Thanks again, David.
>> 
[[elided Yahoo spam]]

(BTW, it did work.)

>> Here's what I'm trying now:
>> 
>> for (i in 1:2) {
>>    mod.poly3 <- try(lrm(x[,i] ~ pol(x1, 3) + pol(x2, 3), data=x))
>>    results[1,i] <- anova(mod.poly3)[1,3]
>> }
> 
> You need to do some programming.

(Or I suppose you could wrap both the lrm and the anova calls in try.)

> You did not get an error from the lrm but rather from the anova call because 
>you tried to give the results of the try function to anova without first 
>checking to see if an error had occurred.
> 
> --David.
>> 
>> Here's what happens (from the console):
>> 
>> Error in fitter(X, Y, penalty.matrix = penalty.matrix, tol = tol, weights = 
>>weights,  :
>>  NA/NaN/Inf in foreign function call (arg 1)
>> Error in UseMethod("anova") :
>>  no applicable method for 'anova' applied to an object of class "try-error"
>> 
>> ...so I still can't make my results matrix. Could I ask you for some 
>> specific 
>>code to make this work? I'm not that familiar with the syntax for try or 
>>tryCatch, and the help files for them are pretty bad, in my humble opinion.
>> 
>> I should clarify that I actually don't care about the failed runs per se. I 
>>just want R to keep going in spite of them and give me my results matrix.
>> 
>> From: David Winsemius <dwinsem...@comcast.net>

>> Cc: R Help <r-help@r-project.org>
>> Sent: Mon, July 12, 2010 8:09:03 PM
>> Subject: Re: [R] Continuing on with a loop when there's a failure
>> 
>> 
>> On Jul 12, 2010, at 6:18 PM, Josh B wrote:
>> 
>> > Hi R sages,
>> >
>> > Here is my latest problem. Consider the following toy example:
>> >
>> > x <- read.table(textConnection("y1 y2 y3 x1 x2
>> > indv.1 bagels donuts bagels 4 6
>> > indv.2 donuts donuts donuts 5 1
>> > indv.3 donuts donuts donuts 1 10
>> > indv.4 donuts donuts donuts 10 9
>> > indv.5 bagels donuts bagels 0 2
>> > indv.6 bagels donuts bagels 2 9
>> > indv.7 bagels donuts bagels 8 5
>> > indv.8 bagels donuts bagels 4 1
>> > indv.9 donuts donuts donuts 3 3
>> > indv.10 bagels donuts bagels 5 9
>> > indv.11 bagels donuts bagels 9 10
>> > indv.12 bagels donuts bagels 3 1
>> > indv.13 donuts donuts donuts 7 10
>> > indv.14 bagels donuts bagels 2 10
>> > indv.15 bagels donuts bagels 9 6"), header = TRUE)
>> >
>> > I want to fit a logistic regression of y1 on x1 and x2. Then I want to run 
a
>> > logistic regression of y2 on x1 and x2. Then I want to run a logistic 
>>regression
>> > of y3 on x1 and x2. In reality I have many more Y columns than simply "y1,"
>> > "y2," and "y3," so I must design a loop. Notice that y2 is invariant and 
>> > thus 
>>it
>> > will fail. In reality, some y columns will fail for much more subtle 
>reasons.
>> > Simply screening my data to eliminate invariant columns will not eliminate 
>>the
>> > problem.
>> >
>> > What I want to do is output a piece of the results from each run of the 
>> > loop 
>>to
>> > a matrix. I want the to try each of my y columns, and not give up and stop
>> > running simply because a particular y column is bad. I want it to give me 
>>"NA"
>> > or something similar in my results matrix for the bad y columns, but I 
>> > want 
>>it
>> > to keep going give me good data for the good y columns.
>> >
>> > For instance:
>> > results <- matrix(nrow = 1, ncol = 3)
>> > colnames(results) <- c("y1", "y2", "y3")
>> >
>> > for (i in 1:2) {
>> > mod.poly3 <- lrm(x[,i] ~ pol(x1, 3) + pol(x2, 3), data=x)
>> > results[1,i] <- anova(mod.poly3)[1,3]
>> > }
>> >
>> > If I run this code, it gives up when fitting y2 because the y2 is bad. It
>> > doesn't even try to fit y3. Here's what my console shows:
>> >
>> >> results
>> >            y1 y2 y3
>> > [1,] 0.6976063 NA NA
>> >
>> > As you can see, it gave up before fitting y3, which would have worked.
>> >
>> > How do I force my code to keep going through the loop, despite the rotten 
>>apples
>> > it encounters along the way?
>> 
>> ?try
>> 
>>http://cran.r-project.org/doc/FAQ/R-FAQ.html#How-can-I-capture-or-ignore-errors-in-a-long-simulation_003f
>>f
>> 
>> (Doesn't only apply to simulations.)
>> 
>> > Exact code that gets the job done is what I am
>> > interested in. I am a post-doc -- I am not taking any classes. I promise 
>> > this 
>>is
[[elided Yahoo spam]]
>> 
>> --
>> David Winsemius, MD
>> West Hartford, CT
>> 
>> 
>> 
> 
> David Winsemius, MD
> West Hartford, CT
> 
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius, MD
West Hartford, CT


      
        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to