[Rd] image() with all NAs fails (PR#8228)

Duncan Murdoch murdoch at stats.uwo.ca
Fri Oct 21 02:04:34 CEST 2005


Prof Brian Ripley wrote:
> On Thu, 20 Oct 2005 murdoch at stats.uwo.ca wrote:
> 
> 
>>On 10/20/2005 12:41 PM, barry.rowlingson at gmail.com wrote:
>>
>>>Full_Name: Barry Rowlingson
>>>Version: 2.2.0
>>>OS: Linux
>>>Submission from: (NULL) (194.80.32.8)
>>>
>>>
>>>The image function with a matrix of all NA values fails with:
>>>
>>>
>>>>xyz=list(x=1:3,y=1:4,z=matrix(NA,3,4))
>>>>image(xyz)
>>>
>>>Error in image.default(xyz) : invalid z limits
>>>In addition: Warning messages:
>>>1: no finite arguments to min; returning Inf
>>>2: no finite arguments to max; returning -Inf
>>>
>>>Image can handle any number of NAs as long as there is at least one data value:
>>>
>>>
>>>>xyz=list(x=1:3,y=1:4,z=matrix(c(1,rep(NA,11)),3,4))
>>>>image(xyz)
>>>
>>> and shows NAs as transparent. However if it is all NAs then the z-limit
>>>calculation breaks down as above.
>>>
>>>  It seems reasonable to me that image() with all NAs should produce a
>>>completely transparent/empty image (after displaying the axes if add!=TRUE) and
>>>not fail with an error.
>>
>>I agree, though I think the warnings are reasonable and a fix shouldn't
>>remove them.  However, I'm not sure what the fix should be.  There's a
>>test in image.default
>>
>>        if (any(!is.finite(zlim)) || diff(zlim) < 0)
>>            stop("invalid z limits")
>>
>>
>>that is throwing the error.  We want the error if a user specifies
>>diff(zlim) < 0 or non-finite z limits, we just don't want it if all the
>>z's are NA.  But a test all(is.na(z)) looks a bit expensive for such a
>>rare case.
> 
> 
> It is not actually documented that zlim can be omitted (something we need 
> to fix too).  Why not just add a check for zlim not being missing to that 
> test?

Works fine, thanks for the suggestion.  I'll commit if you haven't already.

Duncan Murdoch

Duncan



More information about the R-devel mailing list