The apply function was meant to work on matrices and arrays, when you use it on a data frame, the frame is first converted to a matrix. Since your data frame has columns of different modes, the logical column is converted to character and the matrix is of the single mode character. That is what you are seeing.
--
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
greg.snow at imail.org
801.408.8111
-----Original Message-----
From: r-devel-bounces at r-project.org [mailto:r-devel-bounces at r-
project.org] On Behalf Of Adrian Dragulescu
Sent: Wednesday, November 04, 2009 12:45 PM
To: r-devel
Subject: [Rd] inconsistent behavior for logical vectors when using
apply (" TRUE")
Hello,
X <- data.frame(letters=letters[1:3], flag=c(TRUE, FALSE, TRUE))
X
letters flag
1 a TRUE
2 b FALSE
3 c TRUE
[[1]]
[[1]]$letters
[1] "a"
[[1]]$flag
[1] " TRUE"
[[2]]
[[2]]$letters
[1] "b"
[[2]]$flag
[1] "FALSE"
[[3]]
[[3]]$letters
[1] "c"
[[3]]$flag
[1] " TRUE"
Notice how TRUE becomes " TRUE" and FALSE becomes "FALSE". Not sure
why
TRUE gets an extra whitespace in front.
Checked with R-2.10.0, but can reproduce the behavior as far back as
R-2.8.1.
Adrian Dragulescu
R version 2.10.0 (2009-10-26)
i386-pc-mingw32
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United
States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] tools_2.10.0