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.s...@imail.org 801.408.8111 > -----Original Message----- > From: r-devel-boun...@r-project.org [mailto:r-devel-boun...@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 > > apply(X, 1, as.list) > [[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 > > > sessionInfo() > 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 > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel