jens.oehlschlaegel-akiyoshi@mdfactory.de
1999-Dec-22 15:23 UTC
as.matrix.data.frame() modifies content of character columns (PR#386)
If you have the following dataframe:> x <- data.frame(x=I(rep('"', 3)))then> as.matrix(x)[1,1] == x[1,1][1] FALSE which seems to be WRONG to me. Also I don't understand> xx 1 \\\" 2 \\\" 3 \\\" Details ====== As expected> unclass(x)$x [1] "\"" "\"" "\"" attr(,"class") [1] "AsIs" attr(,"row.names") [1] "1" "2" "3" but now look at this correct:> x[1,1][1] "\"" wrong:> as.matrix(x)[1,1][1] "\\\"" this is not only a printing problem correct:> cat(x[1,1], "\n")" wrong:> cat(as.matrix(x)[1,1], "\n")\" Interpretation ============= To my understanding, this is caused, because as.matrix.data.frame makes use of format, and format does> cat(format('"'), "\n")\" If this is the cause and format() does right, then consequently format MUST NEVER be used within R routines EXCEPT FOR PRINTING, i.e. formatting something and storing it or returning it from a function is dangerous. Even the use for cat() may be dangerous, as cat() as a side effect may store data, as in write() or write.table(). This deserves a BIG warning in the documentation of format. Here is a list of functions of package:base making use of format> collect <- character() > for (i in ls("package:base")){+ if ( any(grep("format[(]", deparse(get(i, pos="package:base")))) + || any(grep("format.default[(]", deparse(get(i, pos="package:base")))) + )collect <- c(collect, i) + }> collect[1] "add1.default" "add1.glm" "add1.lm" "all.equal.numeric" [5] "anovalist.lm" "as.matrix.data.frame" "drop1.default" "drop1.glm" [9] "drop1.lm" "format.char" "format.default" "format.pval" [13] "help.search" "hist.default" "legend" "ls.print" [17] "print.aov" "print.aovlist" "print.coefmat" "print.dummy.coef" [21] "print.glm" "print.glm.null" "print.htest" "print.lm" [25] "print.mtable" "print.summary.glm" "print.summary.lm" "print.summary.lm.null" [29] "print.tables.aov" "print.ts" "quantile.default" "step" [33] "str.default" "summary.aov" "summary.data.frame" "summary.default" [37] "summary.infl" "symnum" platform Windows arch x86 os Win32 system x86, Win32 status major 0 minor 90.1 year 1999 month December day 15 language R -- Dr. Jens Oehlschlägel-Akiyoshi MD FACTORY GmbH Bayerstrasse 21 80335 München Tel.: 089 545 28-27 Fax.: 089 545 28-10 http://www.mdfactory.de Standard Disclaimers: Opinions expressed here are personal and are not otherwise represented. -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._