[R] How to limit string size when displaying data frames?

David L Carlson dcarlson at tamu.edu
Sat Dec 15 23:49:39 CET 2012


In creating that function, you may want to skip numeric fields so they do
not get trimmed:

> trimstr <- function(x, len=10) { if (is.numeric(x))
+    x else substr(x, 1, len)
+ }
> x
          c1                         c2
1 -0.1674062 ABCDEFGHIJKLMNOPQRSTUVWXYZ
2  2.1589942 ABCDEFGHIJKLMNOPQRSTUVWXYZ
3 -0.8040007 ABCDEFGHIJKLMNOPQRSTUVWXYZ
4 -0.9700669 ABCDEFGHIJKLMNOPQRSTUVWXYZ
5  0.8085148 ABCDEFGHIJKLMNOPQRSTUVWXYZ
> data.frame(lapply(x, trimstr))
          c1         c2
1 -0.1674062 ABCDEFGHIJ
2  2.1589942 ABCDEFGHIJ
3 -0.8040007 ABCDEFGHIJ
4 -0.9700669 ABCDEFGHIJ
5  0.8085148 ABCDEFGHIJ
> data.frame(lapply(x, trimstr, len=4))
          c1   c2
1 -0.1674062 ABCD
2  2.1589942 ABCD
3 -0.8040007 ABCD
4 -0.9700669 ABCD
5  0.8085148 ABCD

----------------------------------------------
David L Carlson
Associate Professor of Anthropology
Texas A&M University
College Station, TX 77843-4352



> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Mauricio Cornejo
> Sent: Saturday, December 15, 2012 3:16 PM
> To: David Winsemius
> Cc: r-help at r-project.org
> Subject: Re: [R] How to limit string size when displaying data frames?
> 
> David ... thank you.
> 
> OK ... so it appears there's no direct way to do this.  But I could
> write a function for printing data frames that would utilize your
> suggested approach, data.frame(lapply()).  This way, I could simply
> call the function with the data frame object as the argument.
> 
> 
> Thanks again for the idea.
> Mauricio
> 
> 
> 
> ________________________________
>  From: David Winsemius <dwinsemius at comcast.net>
> 
> Cc: "r-help at r-project.org" <r-help at r-project.org>
> Sent: Saturday, December 15, 2012 11:48 AM
> Subject: Re: [R] How to limit string size when displaying data frames?
> 
> 
> On Dec 15, 2012, at 8:27 AM, Mauricio Cornejo wrote:
> 
> > Hello,
> >
> > Is there a way to set the maximum width of character columns when
> printing a data frame?
> >
> > I've looked into print(), format(), and options() and have been
> unsuccessful.
> >
> > For example, I'd like to achieve the results below without having to
> modify the data itself.
> 
> > data.frame(lapply(x, substr, 1, 10))
>           c1         c2
> 1 0.13891058 ABCDEFGHIJ
> 2 -0.0533631 ABCDEFGHIJ
> 3 -0.9799945 ABCDEFGHIJ
> 4 0.44754950 ABCDEFGHIJ
> 5 0.90906556 ABCDEFGHIJ
> 
> 
> >
> >> x <- data.frame(c1=rnorm(5), c2="ABCDEFGHIJKLMNOPQRSTUVWXYZ")
> >> x
> > c1                         c2
> > 1  0.7076495 ABCDEFGHIJKLMNOPQRSTUVWXYZ
> > 2 -0.1572245 ABCDEFGHIJKLMNOPQRSTUVWXYZ
> > 3  0.3515308 ABCDEFGHIJKLMNOPQRSTUVWXYZ
> > 4  0.3492925 ABCDEFGHIJKLMNOPQRSTUVWXYZ
> > 5 -0.3805869 ABCDEFGHIJKLMNOPQRSTUVWXYZ
> >
> >> x$c2 <- substr(x$c2, 1, 10) #Only show first 10 chars.
> >> x
> > c1         c2
> > 1  0.7076495 ABCDEFGHIJ
> > 2 -0.1572245 ABCDEFGHIJ
> > 3  0.3515308 ABCDEFGHIJ
> > 4  0.3492925 ABCDEFGHIJ
> > 5 -0.3805869 ABCDEFGHIJ
> > Thanks,
> > Mauricio
> >     [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide http://www.R-project.org/posting-
> guide.html
> > and provide commented, minimal, self-contained, reproducible code.
> 
> David Winsemius
> Alameda, CA, USA
> 	[[alternative HTML version deleted]]




More information about the R-help mailing list