[R-SIG-Mac] pasting from the clipboard

Timothy Bates timothy@c@b@te@ @ending from gm@il@com
Tue Oct 9 09:44:48 CEST 2018


For what it’s worth, this is the function I use:

umx::umx_write_to_clipboard <- function (x) {
    if (umx_check_OS("OSX")) {
        clipboard <- pipe("pbcopy", "w")
        write.table(x, file = clipboard, sep = "\t", row.names = FALSE, 
            col.names = FALSE, quote = FALSE)
        close(clipboard)
    }
    else if (umx_check_OS("Windows")) {
        write.table(x, file = "clipboard", sep = "\t", col.names = NA)
    }
    else {
        message("clipboard not implemented for *nix - awaiting a reliable solution. See:\n\t\thttps://stackoverflow.com/questions/13438556/how-do-i-copy-and-paste-data-into-r-from-the-clipboard#13438558")
    }
}


Checking for updates on the unix front, I see a package called datapasta https://CRAN.R-project.org/package=datapasta <https://cran.r-project.org/package=datapasta>

Not sure how good it is




> On 8 Oct 2018, at 10:08, peter dalgaard <pdalgd using gmail.com> wrote:
> read.table(text=my_str,....) saves you the dangling open connection.
> -pd
>> On 8 Oct 2018, at 02:43 , Tom Hopper <tomhopper using gmail.com> wrote:
>> 
>> Another approach that should work cross-platform is to paste the data into
>> a string, then read the string using read.table():
>> 
>> my_str <- "<paste data here>"
>> my_df <- read.table(textConnection(object = my_str),
>>                           header = TRUE,
>>                           sep = "",
>>                           stringsAsFactors = FALSE)
>> 
>> The pasted data should have line breaks so each row is on its own line in
>> your script, and you'll want to adjust the parameters header and sep to
>> suit your data.
>> 
>> An example of suitable data would be:
>> 
>> my_str <- "T_/K Density_g/mL D2O
>> 273 0.999841 1.10469
>> 274 0.999900 NA
>> 275 0.999941 NA"
>> 
>>>> On Oct 3, 2018, at 9:22 AM, Robert Baer <rbaer using atsu.edu> wrote:
>>>> My memory is that  on the Mac
>>>> 
>>>> dat = read.table(file = pipe("pbpaste"), header = TRUE)      # should
>>> allow me to paste a dataframe copied from a spreadsheet into R.
>>>> 
>>>> When I try that in RStudio 1.1.456 with R 3.5.1 on OSX 10.13.1
>>>> 
>>>> I get the message:
>>>> 
>>>> incomplete line found by readTableHeader on 'pbpaste'
>>>> 
>>>> Could anyone explain this message to me,  and more importantly, tell me
>>> the proper way to paste a dataframe copied to the clipboard from Excel on
>>> the Mac?
>>>> 
>>> The default cell (field) delimiter with Excel is the TAB character, so you
>>> want to use something like:
>>> 
>>> read.table(pipe("pbpaste"), sep = "\t", header = TRUE)
>>> 
>>> Note that you will likely get a warning along the lines of what you got
>>> above, which I believe is due to Excel not having an EOL for the final row
>>> in the clipboard.
>>> 
>>> Regards, Marc Schwartz

	[[alternative HTML version deleted]]



More information about the R-SIG-Mac mailing list