[R] Transfer Crosstable to Word-Document

Gabor Grothendieck ggrothendieck at gmail.com
Sun Feb 17 14:20:11 CET 2008


On Feb 17, 2008 4:41 AM, Peter Dalgaard <p.dalgaard at biostat.ku.dk> wrote:
>
> Gabor Grothendieck wrote:
> > On Feb 16, 2008 5:28 PM, David Scott <d.scott at auckland.ac.nz> wrote:
> >
> >> On Sat, 16 Feb 2008, Alan Zaslavsky wrote:
> >>
> >>
> >>> If you want to get nicely formatted tables in Word and are familiar with
> >>> Office tools (I know it's the Evil Empire but some of us work there), I
> >>> suggest that you use Excel for formatting and then insert the table into
> >>> your Word document.  IMHO, Excel is much superior to Word for table
> >>> formatting, e.g. modifying number of significant digits, playing around
> >>> with fonts and number formats, etc.  And when you have gotten the formats
> >>> right you can paste in modified values of the numbers in the table without
> >>> having to do the formatting again.  Including the table in your Word
> >>> document is easy by cut-paste or creating a live link.
> >>>
> >>> As a user of R under Unix I haven't looked into the facilities for writing
> >>> tables to Excel under Windows but there is something there.  Alternatively
> >>> you can write a fixed-column or tab-delimited file and easily import to
> >>> Excel.
> >>>
> >>>
> >> Production of tables and formatting them in Word is something I have dealt
> >> with a couple of times recently and it really is important to do something
> >> smart because of the time taken to individually format tables.
> >>
> >> An approach I used recently was to produce a text table in R and export it
> >> to Excel as a .csv file which could then be copied as is to Word. Borders
> >> and the like would still have to be formatted individually but not entries
> >>
> >
> > You could get a border automatically by writing your table out
> > as HTML.  Try this using the builtin data frame iris:
> >
> > library(R2HTML)
> > HTML(iris, border = 1, file("clipboard","w"), append=FALSE)
> >
> > Now paste that into Excel and from Excel into Word and you should
> > have a border around it.
> >
> > See ?HTML.data.frame
> >
> > You could alternately generate the HTML yourself giving quite a bit
> > of control.
> >
> Just curious (I don't use Word if I can help it -- even the simplest of
> things drive me up the wall), but can you not import HTML directly in
> Word? OpenOffice seems to do it quite happily with xtable output.

You can open an HTML file in Word as a new document and it will
be properly formatted and then you could save that document as
a Word document and insert it into your main Word document.
Alternately, you could copy and paste it from the newly created Word
document into your main Word document and that would preserve formatting.

If you just use the code I posted then if you try to paste that into Word
you get the HTML source code rather than a formatted table in Word.

Thus its really easier just to paste it into Excel and then into Word
as others have mentioned.

It might be possible to get it onto the clipboard in a correctly formatted
way using:

out <-  capture.output(HTML(iris, stdout(), border = 1, append = FALSE))
writeClipboard(out, format = whatever)

for an appropriate whatever so that it retains its format when pasted into Word.
Some experimentation would be required to find an appropriate whatever.

It would also be possible to write rcom or RDCOMClient code in R which
transferred the document to Word or Excel and copied that new document
to the clipboard, all completely automatically, to ensure its in the proper
format.



More information about the R-help mailing list