help with tryCatch
Note that the error catch is calling your locally defined function. Like anywhere in R, if you assign something to a variable inside a function, it only applies there and not "outside". The quick a dirty fix is to do: err <<- c(err, er) /H
On 2/15/07, Stephen Bond <sje at mast.queensu.ca> wrote:
Henrik,
Please, stay with me.
there is a problem with the way tryCatch processes statements and that
is exactly what the help file does not describe at all. I am trying
************************
catch=function(vec){
ans=NULL;err=NULL;
for (i in vec) {
tryCatch({
source(i);
ans=c(ans,i);
cat(ans," from try");
},
error=function(er){
cat(i," from catch\n");
err=c(err,i);
}
)
}
ret=list(ans=ans,err=err)
ret
}
v=c("gdhfdh","hdhdfjh") #non-existent files
ret=catch(v) # err is NULL and none of the statements in that block is
executed ??
below is a Java example that executes the catch block as it should. How
can I achieve the same in R?
***************************
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Vector;
public class ReadFiles {
public static void main(String[] args) {
String[] files={"asdf","qwert"};
Vector err=new Vector();
FileReader inputStream = null;
for (int j=0;j<2;j++){
try {
inputStream = new FileReader(files[j]);
int c;
while ((c = inputStream.read()) != -1) {}
} catch(IOException e){
err.add(j,files[j]); // this statement executes!
} finally {
if (inputStream != null) {
inputStream.close(); // IO not encapsulated here,
but declared in "main throws". pls ignore since "source(arg)" in R takes
care of closing.
}
}
}
for (Object j:err){
System.out.println(j);
}
}
}
Henrik Bengtsson wrote:
To be more precise, put the tryCatch() only around the code causing the problem, i.e. around source(). /H On 2/13/07, Henrik Bengtsson <hb at stat.berkeley.edu> wrote:
Put the for loop outside the tryCatch(). /H On 2/13/07, Stephen Bond <sje at mast.queensu.ca> wrote:
Henrik,
thank you for the reference. Can you please tell me why the following
does not work?
vec=c("hdfhjfd","jdhfhjfg") # non-existent file names
catch=function(vec){
tryCatch({
ans =NULL;err=NULL;
for (i in vec) {
source(i)
ans=c(ans,i)
}
},
interrupt=function(ex){print(ex)},
error=function(er){
print(er)
cat(i,"\n")
err=c(err,i)
},
finally={
cat("finish")
}
) #tryCatch
}
catch(vec) # throws an error after the first file and stops there
while
I want it to go through the list and accumulate the nonexistent filenames in err. Thank you Stephen Henrik Bengtsson wrote:
Hi, google "R tryCatch example" and you'll find: http://www.maths.lth.se/help/R/ExceptionHandlingInR/ Hope this helps Henrik On 2/13/07, Stephen Bond <sje at mast.queensu.ca> wrote:
Henrik, I had looked at tryCatch before posting the question and asked the question because the help file was not adequate for me. Could
you pls
provide a sample code of
try{ try code}
catch(error){catch code}
let's say you have a vector of local file names and want to
source them
encapsulating in a tryCatch to avoid the skipping of all good
file names
after a bad file name. thank you stephen Henrik Bengtsson wrote:
See ?tryCatch. /Henrik On 2/12/07, Stephen Bond <sje at mast.queensu.ca> wrote:
Could smb please help with try-catch encapsulating a function
for
downloading. Let's say I have a character vector of symbols and
want to
download each one and surround by try and catch to be safe # get.hist.quote() is in library(tseries), but the question
does not
depend on it, I could be sourcing local files instead
ans=null;error=null;
for ( sym in sym.vec){
try(ans=cbind(ans,get.hist.quote(sym,start=start)))
#accumulate in
a zoo
matrix
catch(theurlerror){error=c(error,sym)} #accumulate failed
symbols
} I know the code above does not work, but it conveys the idea.
tryCatch
help page says it is similar to Java try-catch, but I know
how to
do a
try-catch in Java and still can't do it in R. Thank you very much. stephen
______________________________________________ R-help at stat.math.ethz.ch 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.