Gregor.Gorjanc at bfro.uni-lj.si
2008-Aug-07 10:14 UTC
[Rd] Bug in format.default(): na.encode does not have any effect for (PR#12318)
Hi! If I use format() on numeric vector, na.encode argument does not have any effect. This was reported before: - https://stat.ethz.ch/pipermail/r-help/2007-October/143881.html - http://tolstoy.newcastle.edu.au/R/e2/devel/06/09/0360.html It works for other (say character) classes!> format(c("a", NA), na.encode=3DTRUE)[1] "a " "NA"> format(c("a", NA), na.encode=3DFALSE)[1] "a" NA I explored this a bit and found out that format.default() uses prettyNum(.Internal(format(...))) for formatting the logical, numeric, complex, ... classes. Simple tests (see bellow) show that .Internal(format()) does not obey the na.encode argument. ## Encode NA as "NA"> .Internal(format(x=3Dc(1, NA), trim=3DFALSE, digits=3DNULL, nsmall=3D0, width=3DNULL, adj=3D1, na.encode=3DTRUE, scientific=3DNA))[1] " 1" "NA" ## Do not encode NA as "NA"> .Internal(format(x=3Dc(1, NA), trim=3DFALSE, digits=3DNULL, nsmall=3D0, width=3DNULL, adj=3D1, na.encode=3DFALSE, scientific=3DNA))[1] " 1" "NA" ## --> no effect ## Does prettyNum encode NA as "NA"> prettyNum(c("1", NA))[1] "1" NA ## --> not for character> prettyNum(c(1, NA))[1] "1" "NA" ## --> but it does for numeric I did all my tests with my Ubuntu box running R> version_ platform i486-pc-linux-gnu arch i486 os linux-gnu system i486, linux-gnu status major 2 minor 7.1 year 2008 month 06 day 23 svn rev 45970 language R version.string R version 2.7.1 (2008-06-23) -- Lep pozdrav / With regards, Gregor Gorjanc ---------------------------------------------------------------------- University of Ljubljana PhD student Biotechnical Faculty www: http://gregor.gorjanc.googlepages.com Zootechnical Department blog: http://ggorjan.blogspot.com Groblje 3 mail: gregor.gorjanc <at> bfro.uni-lj.si SI-1230 Domzale fax: +386 (0)1 72 17 888 Slovenia, Europe tel: +386 (0)1 72 17 861
Prof Brian Ripley
2008-Aug-09 14:34 UTC
[Rd] (PR#12318) Bug in format.default(): na.encode does not have any effect for
Have you read the help page? It says
na.encode: logical: should 'NA' strings be encoded?
No mention of encoding NA numerical values that I can see, and it was
never intended to apply to other than *strings*.
Please do the homework the FAQ asks of you and only use R-bugs if you
'know for certain' -- in particular, do heed
'Rather than jumping to conclusions, show the problem to someone who
knows for certain'
On Thu, 7 Aug 2008, Gregor.Gorjanc at bfro.uni-lj.si wrote:
> Hi!
>
> If I use format() on numeric vector, na.encode argument does not have any
e> ffect. This
> was reported before:
> - https://stat.ethz.ch/pipermail/r-help/2007-October/143881.html
> - http://tolstoy.newcastle.edu.au/R/e2/devel/06/09/0360.html
>
> It works for other (say character) classes!
>
>> format(c("a", NA), na.encode=3DTRUE)
> [1] "a " "NA"
>
>> format(c("a", NA), na.encode=3DFALSE)
> [1] "a" NA
>
> I explored this a bit and found out that format.default() uses
prettyNum(.I> nternal(format(...)))
> for formatting the logical, numeric, complex, ... classes. Simple tests
(se> e bellow) show that
> .Internal(format()) does not obey the na.encode argument.
It works as documented (and coded).
>
> ## Encode NA as "NA"
>> .Internal(format(x=3Dc(1, NA), trim=3DFALSE, digits=3DNULL, nsmall=3D0,
w> idth=3DNULL, adj=3D1, na.encode=3DTRUE, scientific=3DNA))
> [1] " 1" "NA"
>
> ## Do not encode NA as "NA"
>> .Internal(format(x=3Dc(1, NA), trim=3DFALSE, digits=3DNULL, nsmall=3D0,
w> idth=3DNULL, adj=3D1, na.encode=3DFALSE, scientific=3DNA))
> [1] " 1" "NA"
> ## --> no effect
>
> ## Does prettyNum encode NA as "NA"
>> prettyNum(c("1", NA))
> [1] "1" NA
> ## --> not for character
>
>> prettyNum(c(1, NA))
> [1] "1" "NA"
> ## --> but it does for numeric
>
> I did all my tests with my Ubuntu box running R
>
>> version
> _
> platform i486-pc-linux-gnu
> arch i486
> os linux-gnu
> system i486, linux-gnu
> status
> major 2
> minor 7.1
> year 2008
> month 06
> day 23
> svn rev 45970
> language R
> version.string R version 2.7.1 (2008-06-23)
>
> --
> Lep pozdrav / With regards,
> Gregor Gorjanc
> ----------------------------------------------------------------------
> University of Ljubljana PhD student
> Biotechnical Faculty www: http://gregor.gorjanc.googlepages.com
> Zootechnical Department blog: http://ggorjan.blogspot.com
> Groblje 3 mail: gregor.gorjanc <at> bfro.uni-lj.si
> SI-1230 Domzale fax: +386 (0)1 72 17 888
> Slovenia, Europe tel: +386 (0)1 72 17 861
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
--
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