Gregor.Gorjanc at bfro.uni-lj.si
2008-Aug-07 10:21 UTC
[Rd] Methods for format() are not consistent with NA values (PR#12385)
Hi! Methods for format() are not consistent when applied to vectors having NA values. Some methods encode NA values to "NA" by default, while other do not. It would be much more easier to write other functions if these functions would all behave consistently. Examples produced with 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) testData <- data.frame( fac1=3Dfactor(c(NA, letters[1:9], "hjh")), fac2=3Dfactor(c(letters[6:15], NA)), cha1=3Dc(letters[17:26], NA), cha2=3Dc(NA, "longer", letters[25:17]), stringsAsFactors=3DFALSE) levels(testData$fac1) <- c(levels(testData$fac1), "unusedLevel") testData$Date <- as.Date("1900-1-1") testData$Date[2] <- NA testData$POSIXt <- as.POSIXct(strptime("1900-1-1 01:01:01", format=3D"%Y-%m-%d %H:%M:%S")) testData$POSIXt[5] <- NA ## --- Character ---> format(testData$cha1)[1] "q " "r " "s " "t " "u " "v " "w " "x " "y " "z " "NA"> format(testData$cha1, na.encode=3DTRUE)[1] "q " "r " "s " "t " "u " "v " "w " "x " "y " "z " "NA"> format(testData$cha1, na.encode=3DFALSE)[1] "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" NA ## --- Factor ---> format(testData$fac1)[1] "NA " "a " "b " "c " "d " "e " "f " "g " "h " "i " "hjh"> format(testData$fac1, na.encode=3DTRUE)[1] "NA " "a " "b " "c " "d " "e " "f " "g " "h " "i " "hjh"> format(testData$fac1, na.encode=3DFALSE)[1] NA "a " "b " "c " "d " "e " "f " "g " "h " "i " "hjh" ## --- Numeric et al. --- ## na.encode has no effect ## --- Date ---> format(testData$Date)[1] "1900-01-01" NA "1900-01-01" "1900-01-01" "1900-01-01" [6] "1900-01-01" "1900-01-01" "1900-01-01" "1900-01-01" "1900-01-01" [11] "1900-01-01"> format(testData$Date, na.encode=3DTRUE)[1] "1900-01-01" NA "1900-01-01" "1900-01-01" "1900-01-01" [6] "1900-01-01" "1900-01-01" "1900-01-01" "1900-01-01" "1900-01-01" [11] "1900-01-01"> format(testData$Date, na.encode=3DFALSE)[1] "1900-01-01" NA "1900-01-01" "1900-01-01" "1900-01-01" [6] "1900-01-01" "1900-01-01" "1900-01-01" "1900-01-01" "1900-01-01" [11] "1900-01-01" ## --- POSIXt ---> format(testData$POSIXt)[1] "1900-01-01 01:01:01" "1900-01-01 01:01:01" "1900-01-01 01:01:01" [4] "1900-01-01 01:01:01" NA "1900-01-01 01:01:01" [7] "1900-01-01 01:01:01" "1900-01-01 01:01:01" "1900-01-01 01:01:01" [10] "1900-01-01 01:01:01" "1900-01-01 01:01:01"> format(testData$POSIXt, na.encode=3DTRUE)[1] "1900-01-01 01:01:01" "1900-01-01 01:01:01" "1900-01-01 01:01:01" [4] "1900-01-01 01:01:01" NA "1900-01-01 01:01:01" [7] "1900-01-01 01:01:01" "1900-01-01 01:01:01" "1900-01-01 01:01:01" [10] "1900-01-01 01:01:01" "1900-01-01 01:01:01"> format(testData$POSIXt, na.encode=3DFALSE)[1] "1900-01-01 01:01:01" "1900-01-01 01:01:01" "1900-01-01 01:01:01" [4] "1900-01-01 01:01:01" NA "1900-01-01 01:01:01" [7] "1900-01-01 01:01:01" "1900-01-01 01:01:01" "1900-01-01 01:01:01" [10] "1900-01-01 01:01:01" "1900-01-01 01:01:01" -- 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