>>>>> "Duncan" == Duncan Murdoch <[EMAIL PROTECTED]> >>>>> on Sat, 04 Dec 2004 09:17:26 -0500 writes:
Duncan> On Sat, 4 Dec 2004 13:51:55 +0100, Martin Maechler Duncan> <[EMAIL PROTECTED]> wrote: >>>>>>> "Duncan" == Duncan Murdoch <[EMAIL PROTECTED]> on >>>>>>> Sat, 4 Dec 2004 01:55:26 +0100 (CET) writes: >> Duncan> There's an as.matrix() call in write.table that Duncan> means the formatting of numeric columns changes Duncan> depending on whether there are any non-numeric Duncan> columns in the table or not. >> yes, I think I had seen this (a while ago in the source >> code) and then wondered if one shouldn't have used >> data.matrix() instead of as.matrix() - something I >> actually do advocate more generally, as "good programming >> style". It also does solve the problem in the example >> here -- HOWEVER, the lines *before* as.matrix() have >> >> ## as.matrix might turn integer or numeric columns into a >> complex matrix cmplx <- sapply(x, is.complex) >> if(any(cmplx) && !all(cmplx)) x[cmplx] <- >> lapply(x[cmplx], as.character) x <- as.matrix(x) >> >> which makes you see that write.table(.) should also work >> when the data frame has complex variables {or some other >> kinds of non-numeric as you've said above} -- something >> which data.matrix() can't handle.... As soon as you have >> a complex or a character variable (together with others) >> in your data.frame, as.matrix() will have to return >> "character" and apply format() to the numeric variables, >> as well... >> >> So, to make this consistent in your sense, >> i.e. formatting of a column shouldn't depend on the >> presence of other columns, we can't use as.matrix() nor >> data.matrix() but have to basically replicate an altered >> version of as.matrix inside write.table. >> >> I propose to do this, but expose the altered version as >> something like as.charMatrix(.) >> >> and replace the 4 lines {of code in write.table()} above >> by the single line as.charMatrix(x) Duncan> That sounds good. Which version of the formatting Duncan> would you choose, leading spaces or not? My Duncan> preference would be to leave off the leading spaces, mine too, very strong preference, actually: The behavior should be such that each column is formatted ___ as if it was the only column of that data frame ___ Duncan> in the belief that write.table is usually used for Duncan> data storage rather than data display, but it is Duncan> sometimes used for data display (e.g. in Duncan> utils::upgrade.packageStatus, which would not be Duncan> affected by your choice). ______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-devel