如何从剪贴板中将数据复制并粘贴到R中?

时间:2012-11-18 01:10:09

标签: r io clipboard

标题说明了一切:我在另一个应用程序(例如电子表格,如Excel或文本编辑器)中打开了我的数据。如果我将该数据复制到我的操作系统剪贴板,如何将其作为data.frame读入R?

12 个答案:

答案 0 :(得分:56)

假设您在Windows剪贴板中有数据(例如,从Excel复制的数据),将该数据放入R中名为copdat的变量中使用:

copdat <- read.delim("clipboard")

如果要将名为rdat的R变量中的数据复制到Windows剪贴板中(例如,要复制到Excel中),请使用:

write.table(rdat, "clipboard", sep="\t", row.names=FALSE, col.names=FALSE)

答案 1 :(得分:44)

用于“剪贴板”的名称和确切连接因操作系统而异。

for Windows:

x <- read.delim("clipboard")

适用于Mac OS:

x <- read.delim(pipe(“pbpaste”))

这是有效的,因为与许多函数一样,read.delim将接受除文件之外的一系列连接类型。对于Mac,我们实际上使用的是管道。 help(connections)非常有用。

mental package有一个函数read.clipboard(),通过测试你的操作系统可以让它更容易。

如此处其他人所述,您也可以写入剪贴板。通常有32 K的限制,可以通过在剪贴板后添加连字符和数字来提高,例如,从对象df传递高达256 K的数据:

write.table(df, "clipboard-256")

答案 2 :(得分:8)

如果您想从电子表格中读取表格数据,我使用了以下代码

read.table(file = "clipboard", sep = "\t", header=TRUE)

答案 3 :(得分:8)

有一个名为datapasta的R包/ RStudio插件可以非常巧妙地完成 - 请参阅https://CRAN.R-project.org/package=datapasta。下图是其简洁性的演示

enter image description here

答案 4 :(得分:6)

键入data = as.numeric(read.table(text = "125 140 200 200 190 ", sep = " ")),其中您的数字介于text = " "引号之间。

答案 5 :(得分:0)

我需要将复合复制到Windows 中,而read.table()输出一个带有我的网址引号的字符向量。 相反,我使用了包中的writeClipboard(URL,format=1),并且它完成了这一操作。

答案 6 :(得分:0)

查看?file的文档,Clipboard部分:

  

剪贴板   文件可以与description =&#34; clipboard&#34;在模式&#34; r&#34;只要。这将读取X11主要选择(参见http://standards.freedesktop.org/clipboards-spec/clipboards-latest.txt),也可以指定为&#34; X11_primary&#34;次要选择为&#34; X11_secondary&#34;。在大多数系统上,剪贴板选择(“编辑”菜单中的“复制”使用)可以指定为&#34; X11_clipboard&#34;。   打开剪贴板进行读取时,内容会立即复制到连接中的内部存储器中。   希望写入其中一个X11选项的Unix用户可以通过xclip(http://sourceforge.net/projects/xclip/)或xsel(http://www.vergenet.net/~conrad/software/xsel/)来执行此操作,例如通过管道(&#34; xclip -i&#34) ;&#34; w&#34;)用于主要选择。   macOS用户可以使用管道(&#34; pbpaste&#34;)和管道(&#34; pbcopy&#34;,&#34; w&#34;)来读取和写入该系统的剪贴板。

所以,例如magrittr:

base::file(description='clipboard') %>% readLines

答案 7 :(得分:0)

我已经测试过并且可以在Windows和MacOS上使用的一种方法是将textConnection()read.table()一起使用。

首先,将数据作为文本粘贴到变量中:

density_water_str <-   "T_/K Density_g/mL D2O
273 0.999841 1.10469
274 0.999900 NA
275 0.999941 NA
276 0.999965 NA
277 0.999973 1.1057
278 0.999965 1.10562
279 0.999941 NA
280 0.999902 NA
281 0.999849 NA
282 0.999781 NA
281 0.999700 NA"

然后,使用read.table()读取文本字符串

density_water <- read.table(textConnection(
                                object = density_water_str), 
                            header = TRUE, 
                            sep = "", 
                            stringsAsFactors = FALSE)

尚未在Linux或其他Unix系统上进行测试,但我认为它应该可以跨平台运行。

答案 8 :(得分:0)

要使用“ datapasta”补充“ wjchulme”答案,如果您想通过R设置/解释datapasta的输出,以便使用剪贴板内容设置变量,则可以执行以下操作:

read.from.clipboard <- function() {
  mydata<-eval(parse(text=paste(capture.output(datapasta::tribble_paste(output_context = datapasta::console_context()), file=NULL), collapse="")))
  str(mydata); View(capture.output(str(mydata), file=NULL)) #Check guessed format is ok
  return(mydata)
}
mydata<-read.from.clipboard() #Tibble format
mydata<-as.data.frame(read.from.clipboard()) #Data.frame format

答案 9 :(得分:0)

我正在使用Mojave 10.14

使用命令输入:X<-read.delim("clipboard")在Mac的Rstudio版本1.1.463中遇到以下警告:

Error in file(file, "rt") : cannot open the connection In addition: Warning message: In 
file(file, "rt") : cannot open file 'pbpaste': No such file or directory 

通过Google搜索解决方案,我已经尝试并测试了无数种解决方案,程序包和命令来运行,并且经过日以继夜的试验,终于可以使用了。

我希望没有人会再因这个问题而经历那么多痛苦,因此,我正在分享这一信息。

请遵循以下所有内容,因为我不确定哪个特殊的安装是神奇的(下载不必按此特定顺序进行):

  1. https://cran.r-project.org/bin/macosx/下载R-3.6.1.pkg

  2. https://www.rstudio.com/products/rstudio/download/#download

  3. 下载Rstudio
  4. 在Rstudio中安装rcmdr软件包

    转到“工具”>“安装软件包”>输入rcmdr

  5. https://www.xquartz.org/下载XQuartz'X11'

  6. 下载所有软件包

    转到https://cran.r-project.org/bin/macosx/tools/,然后下载以下工具:

    • clang-8.0.0.pkg(OS X 10.11+,签名,64位)
    • gfortran-4.2.3.pkg(OS X 10.5+,已签名,64位驱动程序)
    • tcltk-8.5.5-x11.pkg(OS X 10.5+,已签名)
  7. 现在返回Rstudio并输入:

    X<-read.delim("clipboard") 
    X 
    

    现在,将在excel中复制的数据导入Rstudio控制台中。

希望此信息将对您有所帮助。

答案 10 :(得分:0)

答案 11 :(得分:0)

另一种方法是使用 clipr 包。我给你留下了link,我在那里得到了这个例子。

library("clipr")
my_data <- read_clip_tbl()
my_data