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