[Rd] paste() with NAs .. change worth persuing?
Martin Maechler
maechler at stat.math.ethz.ch
Fri Aug 24 09:22:02 CEST 2007
>>>>> "PS" == Petr Savicky <savicky at cs.cas.cz>
>>>>> on Thu, 23 Aug 2007 15:49:32 +0200 writes:
PS> On Wed, Aug 22, 2007 at 08:53:39PM +0300, Jari Oksanen wrote:
>>
>> On 22 Aug 2007, at 20:16, Duncan Murdoch wrote:
>> > A fairly common use of paste is to put together reports for human
>> > consumption. Currently we have
>> >
>> >> p <- as.character(NA)
>> >> paste("the value of p is", p)
>> > [1] "the value of p is NA"
>> >
>> > which looks reasonable. Would this become
>> >
>> >> p <- as.character(NA)
>> >> paste("the value of p is", p)
>> > [1] NA
>> >
>> > under your proposal? (In a quick search I was unable to find a real
>> > example where this would happen, but it would worry me...)
>>
>> At least stop() seems to include such a case:
>>
>> message <- paste(args, collapse = "")
>>
>> and we may expect there are NAs sometimes in stop().
PS> The examples show, that changing the behavior of paste in general
PS> may not be appropriate. On the other hand, if we concatenate
PS> character vectors, which are part of data, then is.na(paste(...,NA,...))
PS> makes sense. Character vectors in data are usually represented
PS> by factors. On the other hand, factors are not typical in cases,
PS> where paste is used to produce a readable message. Hence, it
PS> could be possible to have is.na(u[i]) for those i, for which
PS> some of the vectors v1, ..., vn in
PS> u <- paste(v1,....,vn)
PS> is a factor and has NA at i-th position.
You are right. But I don't think any longer that it is sensible
to make paste() complicated like that.
Also note that currently, the first step in paste
is to "as.character(.)" all of its arguments,
--- and it's help page does say so too ---
such that
later, you can't distinguish anymore between
"original character NA"
and "original numeric/factor NA".
Thanks to all the respondents,
I've now been convinced that the answer to my original question
is "no" {i.e. it's not worth persuing to change paste() here ..}.
I will add a note to paste()'s help page mentioning the
somewhat undesired behavior for the case one is really just
thinking of character string manipulations.
Martin
More information about the R-devel
mailing list