janef@stat.berkeley.edu
2001-Nov-06 18:19 UTC
[Rd] incorrect xlim error message in image() (PR#1160)
Hi, I am having problem with R misinterpreting (x,y) values in image(). I downloaded the followiing binary version of R:> version_ platform i686-pc-linux-gnu arch i686 os linux-gnu system i686, linux-gnu status major 1 minor 3.0 year 2001 month 06 day 22 language R> q()[janef@cc-jainlabx1 Poster.tahoe]$ gcc -v Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-81) Here is the transcript of an example: _______________________________________ x1 <- c(6.564103, 13.77149,13.7715,21.66154,21.82564,26.21374,30.85128,31.0055,31.01538,32.33805,3 3.14872,37.42195,47.92451,54.3179,58.90297,60.55385,84.56862,100.0862,111.2681,1 94,194.4878,195.8302) x2 <- c(0,0.002242152,0.004484305,0.006726457,0.00896861,0.01121076,0.01345291,0.01569 507,0.01793722,0.02017937,0.02242152,0.02466368,0.02690583,0.02914798,0.03139013 ,0.03363229,0.03587444,0.03811659,0.04035874,0.04932735,0.05156951,0.05381166) y <- 1 z <- c(0,0.067,NA,0.167,0.083,0.05,0.067,NA,0,0.1,0,0.05,0.067,0.067,0.016,0.117,0.01 7,-0.017,0.2,0.35,0.134,0.15) z_matrix(z, length(z),1) image(x2, y, z) Error in image(as.double(x), as.double(y), as.integer(zi), col) : invalid x / y values or limits image(x2[1:20], y, as.matrix(z[1:20,])) "OK" image(x1, y, z) Error in image(as.double(x), as.double(y), as.integer(zi), col) : invalid x / y values or limits image(x1[1:20], y, as.matrix(z[1:20,])) Error in image(as.double(x), as.double(y), as.integer(zi), col) : invalid x / y values or limits ________________________________________ Jason Turner (jasont@indigoindustrial.co.nz) had been kindly helping me with figureing it out and he sugegstedd that it's a bug and sent me the following email: _____________________ For giggles, I tweaked plot3d.c to track where the error occured. The diff output is: !!!THIS PATCH IS A BUG TRACE, NOT A BUG FIX!!! --PATCH BEGINS -- 1518a1519> fprintf(stderr,"test 1\n");1519a1521> fprintf(stderr,"test 2\n");1520a1523> fprintf(stderr,"test 3\n");1522,1524c1525,1542 < for (i = 1; i < nx; i++) < if (!R_FINITE(x[i]) || x[i] <= x[i - 1]) goto badxy; < for (j = 1; j < ny; j++) ---> fprintf(stderr,"test 4\n"); > for (i = 1; i < nx; i++) { > for (i = 1; i < nx; i++) { > fprintf(stderr,"test 4 - %d\n",i); > if (!R_FINITE(x[i]) || x[i] <= x[i - 1]) { > if(!R_FINITE(x[i])) { > fprintf(stderr,"not a finite number\n"); > } else if( x[i] <= x[i-1]) { > fprintf(stderr,"x[%d] <= x[%d]\n",i,i-1); > fprintf(stderr,"%f <= %f\n",x[i],x[i-1]); > } else { > fprintf(stderr,"now it looks fine\n"); > } > goto badxy; > } > } > fprintf(stderr,"test 5\n"); > for (j = 1; j < ny; j++){ > fprintf(stderr,"test 5 - %d\n",j);1525a1544> }--PATCH ENDS-- Your transcript session with the tweaked plot3d:> x1 <- c(6.564103,13.77149,13.7715,21.66154,21.82564,26.21374,30.85128,31.0055,31.01538,32.33805,3 3.14872,37.42195,47.92451,54.3179,58.90297,60.55385,84.56862,100.0862,111.2681,1 94,194.4878,195.8302)> > x2 <-c(0,0.002242152,0.004484305,0.006726457,0.00896861,0.01121076,0.01345291,0.01569 507,0.01793722,0.02017937,0.02242152,0.02466368,0.02690583,0.02914798,0.03139013 ,0.03363229,0.03587444,0.03811659,0.04035874,0.04932735,0.05156951,0.05381166)> > y <- 1 > > z <-c(0,0.067,NA,0.167,0.083,0.05,0.067,NA,0,0.1,0,0.05,0.067,0.067,0.016,0.117,0.01 7,-0.017,0.2,0.35,0.134,0.15)> > z_matrix(z, length(z),1) > > image(x2, y, z)test 1 test 2 test 3 test 4 test 4 - 1 test 4 - 2 test 4 - 3 test 4 - 4 test 4 - 5 test 4 - 6 test 4 - 7 test 4 - 8 test 4 - 9 test 4 - 10 test 4 - 11 test 4 - 12 test 4 - 13 test 4 - 14 test 4 - 15 test 4 - 16 test 4 - 17 test 4 - 18 test 4 - 19 test 4 - 20 test 4 - 21 x[21] <= x[20] 0.052691 <= 0.053812 Error in image(as.double(x), as.double(y), as.integer(zi), col) : invalid x / y values or limits> ## x[20] and x[21] correspond to x2[21] and x2[22] > x2[21:22][1] 0.05156951 0.05381166> ## nb - x2[22] has same value as x[20] ??? > q()Looks like some serious confusion over the value of numbers. Or I'm seriously confused about they way R's main components handle arrays. Note that my system also passed make check (before I tweaked plot3d.c). ___________________________ Thank you for all your help. Sincerily, Jane ************************************************************************************** Jane Fridlyand, Ph.D., Bioinformatics Scientist UCSF Cancer Center, Box 0128 San Francisco, CA 94143-0128 Office: Room N412 Tel: (415)514-3302 Fax: (415)502-3179 ************************************************************************************** ---------- Forwarded message ---------- Date: Fri, 2 Nov 2001 20:32:23 +1300 From: Jason Turner <jasont@indigoindustrial.co.nz> To: Jane Fridlyand <janef@stat.Berkeley.EDU> Subject: Re: image function Jane, When you've got the information about your system ("version" output and binary/source+compiler+make check info), sent that to r-bugs@r-project.org, along with the transcript below. Do not copy r-help into that letter; those who monitor r-bugs also watch r-help, and they dislike duplicate messages even more than the rest of us (becuase they get so many). I found this out the hard way ;-) Give it a nice description, such as "incorrect xlim error message in image()", and you'll make their job even easier. For giggles, I tweaked plot3d.c to track where the error occured (I can never remember how to make gdb work when I need it). The diff output is: !!!THIS PATCH IS A BUG TRACE, NOT A BUG FIX!!! --PATCH BEGINS -- 1518a1519> fprintf(stderr,"test 1\n");1519a1521> fprintf(stderr,"test 2\n");1520a1523> fprintf(stderr,"test 3\n");1522,1524c1525,1542 < for (i = 1; i < nx; i++) < if (!R_FINITE(x[i]) || x[i] <= x[i - 1]) goto badxy; < for (j = 1; j < ny; j++) ---> fprintf(stderr,"test 4\n"); > for (i = 1; i < nx; i++) { > fprintf(stderr,"test 4 - %d\n",i); > if (!R_FINITE(x[i]) || x[i] <= x[i - 1]) { > if(!R_FINITE(x[i])) { > fprintf(stderr,"not a finite number\n"); > } else if( x[i] <= x[i-1]) { > fprintf(stderr,"x[%d] <= x[%d]\n",i,i-1); > fprintf(stderr,"%f <= %f\n",x[i],x[i-1]); > } else { > fprintf(stderr,"now it looks fine\n"); > } > goto badxy; > } > } > fprintf(stderr,"test 5\n"); > for (j = 1; j < ny; j++){ > fprintf(stderr,"test 5 - %d\n",j);1525a1544> }--PATCH ENDS-- Your transcript session with the tweaked plot3d: R : Copyright 2001, The R Development Core Team Version 1.3.1 (2001-08-31) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type `license()' or `licence()' for distribution details. R is a collaborative project with many contributors. Type `contributors()' for more information. Type `demo()' for some demos, `help()' for on-line help, or `help.start()' for a HTML browser interface to help. Type `q()' to quit R.> x1 <- c(6.564103, 13.77149,13.7715,21.66154,21.82564,26.21374,30.85128,31.0055,31.01538,32.33805,33.14872,37.42195,47.92451,54.3179,58.90297,60.55385,84.56862,100.0862,111.2681,194,194.4878,195.8302) > > x2 <- c(0,0.002242152,0.004484305,0.006726457,0.00896861,0.01121076,0.01345291,0.01569507,0.01793722,0.02017937,0.02242152,0.02466368,0.02690583,0.02914798,0.03139013,0.03363229,0.03587444,0.03811659,0.04035874,0.04932735,0.05156951,0.05381166) > > y <- 1 > > z <- c(0,0.067,NA,0.167,0.083,0.05,0.067,NA,0,0.1,0,0.05,0.067,0.067,0.016,0.117,0.017,-0.017,0.2,0.35,0.134,0.15) > > z_matrix(z, length(z),1) > > image(x2, y, z)test 1 test 2 test 3 test 4 test 4 - 1 test 4 - 2 test 4 - 3 test 4 - 4 test 4 - 5 test 4 - 6 test 4 - 7 test 4 - 8 test 4 - 9 test 4 - 10 test 4 - 11 test 4 - 12 test 4 - 13 test 4 - 14 test 4 - 15 test 4 - 16 test 4 - 17 test 4 - 18 test 4 - 19 test 4 - 20 test 4 - 21 x[21] <= x[20] 0.052691 <= 0.053812 Error in image(as.double(x), as.double(y), as.integer(zi), col) : invalid x / y values or limits> ## x[20] and x[21] correspond to x2[21] and x2[22] > x2[21:22][1] 0.05156951 0.05381166> ## nb - x2[22] has same value as x[20] ??? > q()Looks like some serious confusion over the value of numbers. Or I'm seriously confused about they way R's main components handle arrays (which is probably true in any case ;-). Note that my system also passed make check (before I tweaked plot3d.c). Cheers Jason -- Indigo Industrial Controls Ltd. 64-21-343-545 jasont@indigoindustrial.co.nz -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
ripley@stats.ox.ac.uk
2001-Nov-06 19:56 UTC
[Rd] incorrect xlim error message in image() (PR#1160)
1) that was not the error message, and it is not the actual error, either. Please don't guess here: it helps immensely to have accurate subjects. 2) I don't think this is a very good way to use image. You are specifying the midpoints of an uneven sequence: it makes a lot more sense to specify the break points. 3) You don't need to go to C code here: just run debug(image.default) 4) There was a bug in the algorithm to find the breakpoints from the midpoints. I am about to fix it. On Tue, 6 Nov 2001 janef@stat.berkeley.edu wrote:> > Hi, > > I am having problem with R misinterpreting (x,y) values in image(). I > downloaded the followiing binary version of R: > > > version > _ > platform i686-pc-linux-gnu > arch i686 > os linux-gnu > system i686, linux-gnu > status > major 1 > minor 3.0 > year 2001 > month 06 > day 22 > language R > > q() > [janef@cc-jainlabx1 Poster.tahoe]$ gcc -v > Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs > gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-81) > > Here is the transcript of an example: > > > _______________________________________ > > x1 <- c(6.564103, > 13.77149,13.7715,21.66154,21.82564,26.21374,30.85128,31.0055,31.01538,32.33805,3 > 3.14872,37.42195,47.92451,54.3179,58.90297,60.55385,84.56862,100.0862,111.2681,1 > 94,194.4878,195.8302) > > x2 <- > c(0,0.002242152,0.004484305,0.006726457,0.00896861,0.01121076,0.01345291,0.01569 > 507,0.01793722,0.02017937,0.02242152,0.02466368,0.02690583,0.02914798,0.03139013 > ,0.03363229,0.03587444,0.03811659,0.04035874,0.04932735,0.05156951,0.05381166) > > y <- 1 > > z <- > c(0,0.067,NA,0.167,0.083,0.05,0.067,NA,0,0.1,0,0.05,0.067,0.067,0.016,0.117,0.01 > 7,-0.017,0.2,0.35,0.134,0.15) > > z_matrix(z, length(z),1) > image(x2, y, z) > Error in image(as.double(x), as.double(y), as.integer(zi), col) : > invalid x / y values or limits > > image(x2[1:20], y, as.matrix(z[1:20,])) > > "OK" > > image(x1, y, z) > Error in image(as.double(x), as.double(y), as.integer(zi), col) : > invalid x / y values or limits > > image(x1[1:20], y, as.matrix(z[1:20,])) > Error in image(as.double(x), as.double(y), as.integer(zi), col) : > invalid x / y values or limits > > ________________________________________ > > Jason Turner (jasont@indigoindustrial.co.nz) had been kindly helping me > with figureing it out and he sugegstedd that it's a bug and sent me the > following email: > > _____________________ > > > For giggles, I tweaked plot3d.c to track where the error occured. The diff > output is: > > !!!THIS PATCH IS A BUG TRACE, NOT A BUG FIX!!! > --PATCH BEGINS -- > 1518a1519 > > fprintf(stderr,"test 1\n"); > 1519a1521 > > fprintf(stderr,"test 2\n"); > 1520a1523 > > fprintf(stderr,"test 3\n"); > 1522,1524c1525,1542 > < for (i = 1; i < nx; i++) > < if (!R_FINITE(x[i]) || x[i] <= x[i - 1]) goto badxy; > < for (j = 1; j < ny; j++) > --- > > fprintf(stderr,"test 4\n"); > > for (i = 1; i < nx; i++) { > > for (i = 1; i < nx; i++) { > > fprintf(stderr,"test 4 - %d\n",i); > > if (!R_FINITE(x[i]) || x[i] <= x[i - 1]) { > > if(!R_FINITE(x[i])) { > > fprintf(stderr,"not a finite number\n"); > > } else if( x[i] <= x[i-1]) { > > fprintf(stderr,"x[%d] <= x[%d]\n",i,i-1); > > fprintf(stderr,"%f <= %f\n",x[i],x[i-1]); > > } else { > > fprintf(stderr,"now it looks fine\n"); > > } > > goto badxy; > > } > > } > > fprintf(stderr,"test 5\n"); > > for (j = 1; j < ny; j++){ > > fprintf(stderr,"test 5 - %d\n",j); > 1525a1544 > > } > --PATCH ENDS-- > > Your transcript session with the tweaked plot3d: > > > x1 <- c(6.564103, > 13.77149,13.7715,21.66154,21.82564,26.21374,30.85128,31.0055,31.01538,32.33805,3 > 3.14872,37.42195,47.92451,54.3179,58.90297,60.55385,84.56862,100.0862,111.2681,1 > 94,194.4878,195.8302) > > > > x2 <- > c(0,0.002242152,0.004484305,0.006726457,0.00896861,0.01121076,0.01345291,0.01569 > 507,0.01793722,0.02017937,0.02242152,0.02466368,0.02690583,0.02914798,0.03139013 > ,0.03363229,0.03587444,0.03811659,0.04035874,0.04932735,0.05156951,0.05381166) > > > > y <- 1 > > > > z <- > c(0,0.067,NA,0.167,0.083,0.05,0.067,NA,0,0.1,0,0.05,0.067,0.067,0.016,0.117,0.01 > 7,-0.017,0.2,0.35,0.134,0.15) > > > > z_matrix(z, length(z),1) > > > > image(x2, y, z) > test 1 > test 2 > test 3 > test 4 > test 4 - 1 > test 4 - 2 > test 4 - 3 > test 4 - 4 > test 4 - 5 > test 4 - 6 > test 4 - 7 > test 4 - 8 > test 4 - 9 > test 4 - 10 > test 4 - 11 > test 4 - 12 > test 4 - 13 > test 4 - 14 > test 4 - 15 > test 4 - 16 > test 4 - 17 > test 4 - 18 > test 4 - 19 > test 4 - 20 > test 4 - 21 > x[21] <= x[20] > 0.052691 <= 0.053812 > Error in image(as.double(x), as.double(y), as.integer(zi), col) : > invalid x / y values or limits > > ## x[20] and x[21] correspond to x2[21] and x2[22] > > x2[21:22] > [1] 0.05156951 0.05381166 > > ## nb - x2[22] has same value as x[20] ??? > > q() > > Looks like some serious confusion over the value of numbers. Or I'm > seriously confused about they way R's main components handle arrays. Note > that my system also passed make check (before I tweaked plot3d.c). > > ___________________________ > > Thank you for all your help. > > Sincerily, Jane > > > > ************************************************************************************** > Jane Fridlyand, Ph.D., Bioinformatics Scientist > UCSF Cancer Center, Box 0128 San Francisco, CA 94143-0128 > Office: Room N412 Tel: (415)514-3302 Fax: (415)502-3179 > ************************************************************************************** > > ---------- Forwarded message ---------- > Date: Fri, 2 Nov 2001 20:32:23 +1300 > From: Jason Turner <jasont@indigoindustrial.co.nz> > To: Jane Fridlyand <janef@stat.Berkeley.EDU> > Subject: Re: image function > > Jane, > > When you've got the information about your system ("version" output > and binary/source+compiler+make check info), sent that to > r-bugs@r-project.org, along with the transcript below. Do not copy > r-help into that letter; those who monitor r-bugs also watch r-help, > and they dislike duplicate messages even more than the rest of us > (becuase they get so many). I found this out the hard way ;-) > Give it a nice description, such as "incorrect xlim error message > in image()", and you'll make their job even easier. > > For giggles, I tweaked plot3d.c to track where the error occured (I > can never remember how to make gdb work when I need it). The diff > output is: > > > !!!THIS PATCH IS A BUG TRACE, NOT A BUG FIX!!! > --PATCH BEGINS -- > 1518a1519 > > fprintf(stderr,"test 1\n"); > 1519a1521 > > fprintf(stderr,"test 2\n"); > 1520a1523 > > fprintf(stderr,"test 3\n"); > 1522,1524c1525,1542 > < for (i = 1; i < nx; i++) > < if (!R_FINITE(x[i]) || x[i] <= x[i - 1]) goto badxy; > < for (j = 1; j < ny; j++) > --- > > fprintf(stderr,"test 4\n"); > > for (i = 1; i < nx; i++) { > > fprintf(stderr,"test 4 - %d\n",i); > > if (!R_FINITE(x[i]) || x[i] <= x[i - 1]) { > > if(!R_FINITE(x[i])) { > > fprintf(stderr,"not a finite number\n"); > > } else if( x[i] <= x[i-1]) { > > fprintf(stderr,"x[%d] <= x[%d]\n",i,i-1); > > fprintf(stderr,"%f <= %f\n",x[i],x[i-1]); > > } else { > > fprintf(stderr,"now it looks fine\n"); > > } > > goto badxy; > > } > > } > > fprintf(stderr,"test 5\n"); > > for (j = 1; j < ny; j++){ > > fprintf(stderr,"test 5 - %d\n",j); > 1525a1544 > > } > --PATCH ENDS-- > > Your transcript session with the tweaked plot3d: > > R : Copyright 2001, The R Development Core Team > Version 1.3.1 (2001-08-31) > > R is free software and comes with ABSOLUTELY NO WARRANTY. > You are welcome to redistribute it under certain conditions. > Type `license()' or `licence()' for distribution details. > > R is a collaborative project with many contributors. > Type `contributors()' for more information. > > Type `demo()' for some demos, `help()' for on-line help, or > `help.start()' for a HTML browser interface to help. > Type `q()' to quit R. > > > x1 <- c(6.564103, 13.77149,13.7715,21.66154,21.82564,26.21374,30.85128,31.0055,31.01538,32.33805,33.14872,37.42195,47.92451,54.3179,58.90297,60.55385,84.56862,100.0862,111.2681,194,194.4878,195.8302) > > > > x2 <- c(0,0.002242152,0.004484305,0.006726457,0.00896861,0.01121076,0.01345291,0.01569507,0.01793722,0.02017937,0.02242152,0.02466368,0.02690583,0.02914798,0.03139013,0.03363229,0.03587444,0.03811659,0.04035874,0.04932735,0.05156951,0.05381166) > > > > y <- 1 > > > > z <- c(0,0.067,NA,0.167,0.083,0.05,0.067,NA,0,0.1,0,0.05,0.067,0.067,0.016,0.117,0.017,-0.017,0.2,0.35,0.134,0.15) > > > > z_matrix(z, length(z),1) > > > > image(x2, y, z) > test 1 > test 2 > test 3 > test 4 > test 4 - 1 > test 4 - 2 > test 4 - 3 > test 4 - 4 > test 4 - 5 > test 4 - 6 > test 4 - 7 > test 4 - 8 > test 4 - 9 > test 4 - 10 > test 4 - 11 > test 4 - 12 > test 4 - 13 > test 4 - 14 > test 4 - 15 > test 4 - 16 > test 4 - 17 > test 4 - 18 > test 4 - 19 > test 4 - 20 > test 4 - 21 > x[21] <= x[20] > 0.052691 <= 0.053812 > Error in image(as.double(x), as.double(y), as.integer(zi), col) : > invalid x / y values or limits > > ## x[20] and x[21] correspond to x2[21] and x2[22] > > x2[21:22] > [1] 0.05156951 0.05381166 > > ## nb - x2[22] has same value as x[20] ??? > > q() > > Looks like some serious confusion over the value of numbers. > Or I'm seriously confused about they way R's main components > handle arrays (which is probably true in any case ;-). > Note that my system also passed make check (before I tweaked > plot3d.c). > > Cheers > > Jason > -- > Indigo Industrial Controls Ltd. > 64-21-343-545 > jasont@indigoindustrial.co.nz > > > -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- > r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html > Send "info", "help", or "[un]subscribe" > (in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch > _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._ >-- Brian D. Ripley, ripley@stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272860 (secr) Oxford OX1 3TG, UK Fax: +44 1865 272595 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._