On 5/25/2012 12:48 PM, John Kerpel wrote:
Jim:
That's the ticket! I'm actually using parLapply with a long, ugly function
- so I was loath to post that mess.
Many thanks - you saved my weekend.
In the context of tryCatch in your question
lst <- list(1, 2, -3, 4)
sapply(lst, function(x) tryCatch({
stopifnot(x > 0)
x
}, error=function(err) {
NA
}))
which separates out the implementation of the function from the error
handling instead of intermingling the two as with try(). Or a little
more elaboration, reporting the error to stderr as might be appropriate
for a parallel job
sapply(lst, function(x) {
tryCatch({
stopifnot(x>0)
sqrt(x)
}, error=function(err) {
## demote to message on stderr; in context of tryCatch so
## 'x' visible
message(conditionMessage(err), "; x = ", x)
NaN
})
})
or for warnings, showing use of restarts
withCallingHandlers({
sapply(lst, sqrt)
}, warning=function(warn) {
message(conditionMessage(warn))
## restart where the warning occurs; see ?warning and source for
## warning()
invokeRestart("muffleWarning")
})
Martin
On Fri, May 25, 2012 at 2:23 PM, jim holtman<jholt...@gmail.com> wrote:
Please show us the 'lapply' statement you are using. Here is a simple
case of catching an error in an lapply and continuing:
lapply(c(1,2,-3, 4), function(x){
+ a<- try(stopifnot(x> 0)) # force an error
+ if (inherits(a, 'try-error')) return(NULL)
+ x
+ })
Error : x> 0 is not TRUE
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
NULL
[[4]]
[1] 4
On Fri, May 25, 2012 at 2:51 PM, John Kerpel<john.ker...@gmail.com>
wrote:
Folks:
I've replaced an outer for-loop with lapply and it works great. But, I
can't seem to do the following type of exception handling:
tryCatch(dlmMLE(x)$value==Inf,error = function(e) NULL)
which basically says if the likelihood is Inf, throw an error. But what
I
want it to do is just go to the next index in the list. When I was
using a
for-loop I used:
if(tryCatch(dlmMLE(x)$value==Inf,error = function(e) 1)==1) {next} else
.... which worked fine.
Is there a way to do the same thing in lapply?
Thanks for your time. (I've checked Gmane for this type of problem and I
wasn't sure if this problem was answered or not...)
John
[[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.
--
Jim Holtman
Data Munger Guru
What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.
[[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.
--
Dr. Martin Morgan, PhD
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109
______________________________________________
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.