[R] Replacing tabs with appropriate number of spaces

Greg Snow Greg.Snow at imail.org
Tue Dec 9 18:51:47 CET 2008


This is basically your approach, but automated a bit more than you describe:


library(gsubfn)

tmp <- strsplit('one\ttwo\nthree\tfour\n12345678\t910\na\tbc\tdef\tghi\n','\n')[[1]]

tmp2 <- gsubfn('([^\t]+)\t', function(x) {
  ln <- nchar(x)
  nsp <- 8-(ln %% 8)
  sp <- paste( rep(' ', nsp), collapse='' )
  paste(x,sp, sep='')
}, tmp )

tmp2
cat(tmp2, sep='\n')

This is based on the assumption of tab stops every 8 columns, change the 2 8's above if you want something different.

Hope this helps,


--
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
greg.snow at imail.org
801.408.8111


> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Dennis Fisher
> Sent: Tuesday, December 09, 2008 9:40 AM
> To: r-help at stat.math.ethz.ch
> Subject: [R] Replacing tabs with appropriate number of spaces
>
> Colleagues,
>
> Platform: OS X (but issue applies to all platforms)
> Version: 2.8.0
>
> I have a mixture of text and data that I am outputting via R to a pdf
> document (using a fixed-width font).  The text contains tabs that
> align columns properly with a fixed-width font in a terminal window.
> However, when the PDF document is created, the concept of a tab is not
> invoked properly and columns do not align.
>
> I could use brute force as follows:
> 1.  identify lines of text containing tabs
> 2.  strsplit on tabs
> 3.  count characters preceding the tab, then replace the tab with the
> appropriate number of spaces (e.g., if the string preceding the tab
> has 29 characters, add 3 spaces), then paste(..., sep="")
>
> However, I am sure a more elegant approach exists.  Can anyone offer
> one?
>
> Dennis
>
>
> Dennis Fisher MD
> P < (The "P Less Than" Company)
> Phone: 1-866-PLessThan (1-866-753-7784)
> Fax: 1-415-564-2220
> www.PLessThan.com
>
> ______________________________________________
> 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.



More information about the R-help mailing list