Replacing tabs with appropriate number of spaces
That's a clever use of gsubfn. Here is a very minor simplification using
the same code but representing it in formula notation and sprintf:
gsubfn('([^\t]+)\t', ~ sprintf("%s%*s", x, 8-nchar(x)%%8, " "), tmp)
On Tue, Dec 9, 2008 at 12:51 PM, Greg Snow <Greg.Snow at imail.org> wrote:
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.
______________________________________________ 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.