Sarah Brockhaus
2013-Jan-07 15:52 UTC
[R] try()-function does not catch error in BATCH-job if Matrix is loaded
Hello, In my simulation I use the try()-function to catch possible errors when fitting models. I run the simulationon a Linux-server using the command " R CMD BATCH nameOfFile.R &". When executing the code as batch-job I get the problem that the execution is halted without giving an error message. But when I run the code interactivly the error is catched by try() as it would be expected. The problem is somewhat strange as it only occurs when the code is executed as a batch-job and when the package "Matrix" is loaded. I wrote a small example reproducing the error. (In my code the error occurs in mgcv:::fixDependence, which looks like the code I'm using below in order to get a small reproducible example. I realized that the code makes no sense...) ###################################### library(Matrix) R <- matrix(abs(rnorm(25)), 5, 5) r0 <- r <- nrow(R) # while-loop produces error that should be catched by the function try() try( while (mean(R[r0:r, r0:r]) > 0) r0 <- r0 - 1 ) # so "Hello" should be printed print("Hello") ###################################### I use R version 2.15.1 (2012-06-22) on a x86_64-pc-linux-gnu (64-bit) platform. I would be grateful for help. Best regards, Sarah Brockhaus PHD-student Department of Statistics University of Munich
luke-tierney at uiowa.edu
2013-Jan-07 21:24 UTC
[R] try()-function does not catch error in BATCH-job if Matrix is loaded
This is due to long-staning issue in methods internals, which are involved because loading Matrix shadows base::mean with Matrix::mean. A work-around has been in place in R_devel for some time; a proper fix may come at some point in the future. So if your real code doesn't need the moficied mean from Matrix you can use base::mean; otherwise you will have to use an R-devel snapshot. Best, luke On Mon, 7 Jan 2013, Sarah Brockhaus wrote:> Hello, > > In my simulation I use the try()-function to catch possible errors when > fitting models. I run the simulationon a Linux-server using the command " R > CMD BATCH nameOfFile.R &". When executing the code as batch-job I get the > problem that the execution is halted without giving an error message. But > when I run the code interactivly the error is catched by try() as it would be > expected. > > The problem is somewhat strange as it only occurs when the code is executed > as a batch-job and when the package "Matrix" is loaded. > > I wrote a small example reproducing the error. (In my code the error occurs > in mgcv:::fixDependence, which looks like the code I'm using below in order > to get a small reproducible example. I realized that the code makes no > sense...) > > ###################################### > library(Matrix) > > R <- matrix(abs(rnorm(25)), 5, 5) > r0 <- r <- nrow(R) > > # while-loop produces error that should be catched by the function try() > try( > while (mean(R[r0:r, r0:r]) > 0) r0 <- r0 - 1 > ) > > # so "Hello" should be printed > print("Hello") > ###################################### > > I use R version 2.15.1 (2012-06-22) on a x86_64-pc-linux-gnu (64-bit) > platform. > > I would be grateful for help. > > Best regards, > Sarah Brockhaus > > PHD-student > Department of Statistics > University of Munich > > ______________________________________________ > R-help at 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. >-- Luke Tierney Chair, Statistics and Actuarial Science Ralph E. Wareham Professor of Mathematical Sciences University of Iowa Phone: 319-335-3386 Department of Statistics and Fax: 319-335-3017 Actuarial Science 241 Schaeffer Hall email: luke-tierney at uiowa.edu Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu