[Rd] image() with all NAs fails (PR#8228)
Prof Brian Ripley
ripley at stats.ox.ac.uk
Thu Oct 20 22:56:20 CEST 2005
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?
--
Brian D. Ripley, ripley at 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 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-devel
mailing list