mdlincoln / clipr

R functions for reading and writing from the system clipboard
http://matthewlincoln.net/clipr/
151 stars 24 forks source link

Copying and pasting tables into word/google docs/email #52

Closed jzadra closed 4 years ago

jzadra commented 4 years ago

I'm struggling with getting tables I've copied using clipr to paste into external places. I often need to do a quick share of a table into an email or to a word or google document.

When I do this with a table and paste it into the things mentioned above, the spacing is all messed up when it goes to a plain text editor (ie Spark, my email client) or to an editor that has table functionality (MS Word / Google Docs).

Is there a way to do an easy copy paste that preserves the table spacing for plain text (ie has spaces to make sure the columns line up in raw text)? Or formats as a table in word/gdocs where it ends up in an actual table with cells?

I'm on OS X btw.

mdlincoln commented 4 years ago

You note two issues:

  1. Pasting in to google docs: I can't replicate your issue. If you look at ?write_clip you'll see it uses write.table for dataframes to write out tab-separated text. I can paste the output of write_clip(iris) into a google sheet or an excel table just fine.
  2. Spacing in plain text: you'll need to format the table into a text string before using clipr. I'd suggest using knitr's kable function to format the table as markdown, which can auto-space things for you:
iris %>% kable(format = "markdown") %>% write_clip()

#| Sepal.Length| Sepal.Width| Petal.Length| Petal.Width|Species    |
#|------------:|-----------:|------------:|-----------:|:----------|
#|          5.1|         3.5|          1.4|         0.2|setosa     |
#|          4.9|         3.0|          1.4|         0.2|setosa     |
#|          4.7|         3.2|          1.3|         0.2|setosa     |
#|          4.6|         3.1|          1.5|         0.2|setosa     |
#|          5.0|         3.6|          1.4|         0.2|setosa     |
#|          5.4|         3.9|          1.7|         0.4|setosa     |
#|          4.6|         3.4|          1.4|         0.3|setosa     |
#|          5.0|         3.4|          1.5|         0.2|setosa     |
#|          4.4|         2.9|          1.4|         0.2|setosa     |
#|          4.9|         3.1|          1.5|         0.1|setosa     |
jzadra commented 4 years ago

Thanks.  When I try the Kable, I get a very scrunched and hard to read table that isn’t aligned with spacing between columns.

| Sepal.Length| Sepal.Width| Petal.Length| Petal.Width|Species | |------------:|-----------:|------------:|-----------:|:—————| | 5.1| 3.5| 1.4| 0.2|setosa | | 4.9| 3.0| 1.4| 0.2|setosa | | 4.7| 3.2| 1.3| 0.2|setosa | | 4.6| 3.1| 1.5| 0.2|setosa | | 5.0| 3.6| 1.4| 0.2|setosa | | 5.4| 3.9| 1.7| 0.4|setosa | | 4.6| 3.4| 1.4| 0.3|setosa | | 5.0| 3.4| 1.5| 0.2|setosa | | 4.4| 2.9| 1.4| 0.2|setosa | | 4.9| 3.1| 1.5| 0.1|setosa | | 5.4| 3.7| 1.5| 0.2|setosa | | 4.8| 3.4| 1.6| 0.2|setosa | | 4.8| 3.0| 1.4| 0.1|setosa | | 4.3| 3.0| 1.1| 0.1|setosa | | 5.8| 4.0| 1.2| 0.2|setosa | | 5.7| 4.4| 1.5| 0.4|setosa | | 5.4| 3.9| 1.3| 0.4|setosa | | 5.1| 3.5| 1.4| 0.3|setosa | | 5.7| 3.8| 1.7| 0.3|setosa | | 5.1| 3.8| 1.5| 0.3|setosa | | 5.4| 3.4| 1.7| 0.2|setosa | | 5.1| 3.7| 1.5| 0.4|setosa | | 4.6| 3.6| 1.0| 0.2|setosa | | 5.1| 3.3| 1.7| 0.5|setosa | | 4.8| 3.4| 1.9| 0.2|setosa | | 5.0| 3.0| 1.6| 0.2|setosa | | 5.0| 3.4| 1.6| 0.4|setosa | | 5.2| 3.5| 1.5| 0.2|setosa | | 5.2| 3.4| 1.4| 0.2|setosa | | 4.7| 3.2| 1.6| 0.2|setosa | | 4.8| 3.1| 1.6| 0.2|setosa | | 5.4| 3.4| 1.5| 0.4|setosa | | 5.2| 4.1| 1.5| 0.1|setosa | | 5.5| 4.2| 1.4| 0.2|setosa | | 4.9| 3.1| 1.5| 0.2|setosa | | 5.0| 3.2| 1.2| 0.2|setosa | | 5.5| 3.5| 1.3| 0.2|setosa | | 4.9| 3.6| 1.4| 0.1|setosa | | 4.4| 3.0| 1.3| 0.2|setosa | | 5.1| 3.4| 1.5| 0.2|setosa | | 5.0| 3.5| 1.3| 0.3|setosa | | 4.5| 2.3| 1.3| 0.3|setosa | | 4.4| 3.2| 1.3| 0.2|setosa | | 5.0| 3.5| 1.6| 0.6|setosa | | 5.1| 3.8| 1.9| 0.4|setosa | | 4.8| 3.0| 1.4| 0.3|setosa | | 5.1| 3.8| 1.6| 0.2|setosa | | 4.6| 3.2| 1.4| 0.2|setosa | | 5.3| 3.7| 1.5| 0.2|setosa | | 5.0| 3.3| 1.4| 0.2|setosa | | 7.0| 3.2| 4.7| 1.4|versicolor | | 6.4| 3.2| 4.5| 1.5|versicolor | | 6.9| 3.1| 4.9| 1.5|versicolor | | 5.5| 2.3| 4.0| 1.3|versicolor | | 6.5| 2.8| 4.6| 1.5|versicolor | | 5.7| 2.8| 4.5| 1.3|versicolor | | 6.3| 3.3| 4.7| 1.6|versicolor | | 4.9| 2.4| 3.3| 1.0|versicolor | | 6.6| 2.9| 4.6| 1.3|versicolor | | 5.2| 2.7| 3.9| 1.4|versicolor | | 5.0| 2.0| 3.5| 1.0|versicolor | | 5.9| 3.0| 4.2| 1.5|versicolor | | 6.0| 2.2| 4.0| 1.0|versicolor | | 6.1| 2.9| 4.7| 1.4|versicolor | | 5.6| 2.9| 3.6| 1.3|versicolor | | 6.7| 3.1| 4.4| 1.4|versicolor | | 5.6| 3.0| 4.5| 1.5|versicolor | | 5.8| 2.7| 4.1| 1.0|versicolor | | 6.2| 2.2| 4.5| 1.5|versicolor | | 5.6| 2.5| 3.9| 1.1|versicolor | | 5.9| 3.2| 4.8| 1.8|versicolor | | 6.1| 2.8| 4.0| 1.3|versicolor | | 6.3| 2.5| 4.9| 1.5|versicolor | | 6.1| 2.8| 4.7| 1.2|versicolor | | 6.4| 2.9| 4.3| 1.3|versicolor | | 6.6| 3.0| 4.4| 1.4|versicolor | | 6.8| 2.8| 4.8| 1.4|versicolor | | 6.7| 3.0| 5.0| 1.7|versicolor | | 6.0| 2.9| 4.5| 1.5|versicolor | | 5.7| 2.6| 3.5| 1.0|versicolor | | 5.5| 2.4| 3.8| 1.1|versicolor | | 5.5| 2.4| 3.7| 1.0|versicolor | | 5.8| 2.7| 3.9| 1.2|versicolor | | 6.0| 2.7| 5.1| 1.6|versicolor | | 5.4| 3.0| 4.5| 1.5|versicolor | | 6.0| 3.4| 4.5| 1.6|versicolor | | 6.7| 3.1| 4.7| 1.5|versicolor | | 6.3| 2.3| 4.4| 1.3|versicolor | | 5.6| 3.0| 4.1| 1.3|versicolor | | 5.5| 2.5| 4.0| 1.3|versicolor | | 5.5| 2.6| 4.4| 1.2|versicolor | | 6.1| 3.0| 4.6| 1.4|versicolor | | 5.8| 2.6| 4.0| 1.2|versicolor | | 5.0| 2.3| 3.3| 1.0|versicolor | | 5.6| 2.7| 4.2| 1.3|versicolor | | 5.7| 3.0| 4.2| 1.2|versicolor | | 5.7| 2.9| 4.2| 1.3|versicolor | | 6.2| 2.9| 4.3| 1.3|versicolor | | 5.1| 2.5| 3.0| 1.1|versicolor | | 5.7| 2.8| 4.1| 1.3|versicolor | | 6.3| 3.3| 6.0| 2.5|virginica | | 5.8| 2.7| 5.1| 1.9|virginica | | 7.1| 3.0| 5.9| 2.1|virginica | | 6.3| 2.9| 5.6| 1.8|virginica | | 6.5| 3.0| 5.8| 2.2|virginica | | 7.6| 3.0| 6.6| 2.1|virginica | | 4.9| 2.5| 4.5| 1.7|virginica | | 7.3| 2.9| 6.3| 1.8|virginica | | 6.7| 2.5| 5.8| 1.8|virginica | | 7.2| 3.6| 6.1| 2.5|virginica | | 6.5| 3.2| 5.1| 2.0|virginica | | 6.4| 2.7| 5.3| 1.9|virginica | | 6.8| 3.0| 5.5| 2.1|virginica | | 5.7| 2.5| 5.0| 2.0|virginica | | 5.8| 2.8| 5.1| 2.4|virginica | | 6.4| 3.2| 5.3| 2.3|virginica | | 6.5| 3.0| 5.5| 1.8|virginica | | 7.7| 3.8| 6.7| 2.2|virginica | | 7.7| 2.6| 6.9| 2.3|virginica | | 6.0| 2.2| 5.0| 1.5|virginica | | 6.9| 3.2| 5.7| 2.3|virginica | | 5.6| 2.8| 4.9| 2.0|virginica | | 7.7| 2.8| 6.7| 2.0|virginica | | 6.3| 2.7| 4.9| 1.8|virginica | | 6.7| 3.3| 5.7| 2.1|virginica | | 7.2| 3.2| 6.0| 1.8|virginica | | 6.2| 2.8| 4.8| 1.8|virginica | | 6.1| 3.0| 4.9| 1.8|virginica | | 6.4| 2.8| 5.6| 2.1|virginica | | 7.2| 3.0| 5.8| 1.6|virginica | | 7.4| 2.8| 6.1| 1.9|virginica | | 7.9| 3.8| 6.4| 2.0|virginica | | 6.4| 2.8| 5.6| 2.2|virginica | | 6.3| 2.8| 5.1| 1.5|virginica | | 6.1| 2.6| 5.6| 1.4|virginica | | 7.7| 3.0| 6.1| 2.3|virginica | | 6.3| 3.4| 5.6| 2.4|virginica | | 6.4| 3.1| 5.5| 1.8|virginica | | 6.0| 3.0| 4.8| 1.8|virginica | | 6.9| 3.1| 5.4| 2.1|virginica | | 6.7| 3.1| 5.6| 2.4|virginica | | 6.9| 3.1| 5.1| 2.3|virginica | | 5.8| 2.7| 5.1| 1.9|virginica | | 6.8| 3.2| 5.9| 2.3|virginica | | 6.7| 3.3| 5.7| 2.5|virginica | | 6.7| 3.0| 5.2| 2.3|virginica | | 6.3| 2.5| 5.0| 1.9|virginica | | 6.5| 3.0| 5.2| 2.0|virginica | | 6.2| 3.4| 5.4| 2.3|virginica | | 5.9| 3.0| 5.1| 1.8|virginica |

Thanks,

Jon

-- Jonathan Zadra, PhD (he/him) Director of Data Science Sorenson Impact Center David Eccles School of Business, University of Utah www.sorensonimpact.com (801) 581-4815 On Mar 24, 2020, 6:53 AM -0600, mdlincoln/clipr reply@reply.github.com, wrote:

iris %>% kable(format = "markdown") %>% write_clip()

--

mdlincoln commented 4 years ago

kable assumes that you are pasting text that will be rendered with a fixed-width font. I guess I'm confused about your end goal? Are you trying to paste a table into a .txt document? An excel table?

jzadra commented 4 years ago

Hi,

I’m trying to paste it into email.

Thanks,

Jon

-- Jonathan Zadra, PhD (he/him) Director of Data Science Sorenson Impact Center David Eccles School of Business, University of Utah www.sorensonimpact.com (801) 581-4815 On Mar 26, 2020, 7:46 AM -0600, Matthew Lincoln notifications@github.com, wrote:

kable assumes that you are pasting text that will be rendered with a fixed-width font. I guess I'm confused about your end goal? Are you trying to paste a table into a .txt document? An excel table? — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

--

mdlincoln commented 4 years ago

Use a fixed-width font in the email like Monaco. There's no utility that can properly space a plain-text table using a variable-width font.