From tplate@blackmesacapital.com  Thu Jun 20 17:08:47 2002
From: tplate@blackmesacapital.com (Tony Plate)
Date: Thu, 20 Jun 2002 10:08:47 -0600
Subject: new version of print.factor
In-Reply-To: <874rfzdpz7.fsf@jeeves.blindglobe.net>
Message-ID: <5.1.0.14.2.20020620095015.00aab050@mailhost.blackmesacapital.com>

Here's what S-plus 6.0 does with abbreviate.arg:

# S-plus 6.0
 > print(factor(c("fooooooo","baaaaaar")))
[1] fooooooo baaaaaar
 > print(factor(c("fooooooo","baaaaaar")), quote=T)
[1] "fooooooo" "baaaaaar"
Levels:
[1] "baaaaaar" "fooooooo"
 > print(factor(c("fooooooo","baaaaaar")),abbreviate.arg=T, quote=T)
fooooooo baaaaaar
"fooo" "baar"
Levels:
[1] "baar" "fooo"

(The function below does not abbreviate vector contents when given 
abbreviate.arg==TRUE, which may be more or less suitable depending on the 
task at hand.  Also, S-plus doesn't print levels unless quote==TRUE or "If 
some of the levels in a factor object are not in represented in the 
object", but this difference was already present in the R.1.5.0 version of 
print.factor.)

-- Tony Plate

At 12:32 PM 6/19/2002 -0700, A.J. Rossini wrote:

>Thanks to Tony Plate for letting me know what the abbreviate.arg
>option does.  I think this could be made more flexible (I.e.
>  =TRUE, =FALSE, =#, where # would be passed to the abbreviate
>min.length argument).  But it follows the example I was given.
>
>"print.factor" <-
>   function (x, quote = FALSE, max.levels=5, print.levels = {if
>(max.levels==0) FALSE else TRUE}, abbreviate.arg=FALSE, ...)
>{
>   if (length(x) <= 0)
>     cat("factor(0)\n")
>   else print(as.character(x), quote = quote, ...)
>   if (print.levels) {
>     if (abbreviate.arg) {
>       cat("Levels: ", paste(abbreviate(levels(x)[1:max.levels]),
>                             collapse = " "), "\n")
>     } else {
>       cat("Levels: ", paste(levels(x)[1:max.levels],
>                             collapse = " "), "\n")
>     }
>   }
>   invisible(x)
>}
>
>
>It definitely could be cleaned up a bit more.
>
>best,
>-tony
>
>--
>A.J. Rossini                            Rsrch. Asst. Prof. of Biostatistics
>U. of Washington Biostatistics          rossini@u.washington.edu
>FHCRC/SCHARP/HIV Vaccine Trials Net     rossini@scharp.org
>-------------- http://software.biostat.washington.edu/ ----------------
>FHCRC: M: 206-667-7025 (fax=4812)|Voicemail is pretty sketchy/use Email
>UW:   Th: 206-543-1044 (fax=3286)|Change last 4 digits of phone to FAX
>(my tuesday/wednesday/friday locations are completely unpredictable.)
>
>
>
>-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
>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
>_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._ 
>

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._


new version of print.factor
Tony Plate