R从Ubuntu Linux中的剪贴板复制

时间:2017-08-21 14:21:38

标签: r linux ubuntu libreoffice openoffice-calc

我想从Ubuntu Linux剪贴板复制到R Studio。我的工作流程包括在R Studio和LibreOffice Calc之间来回移动。我发现以下代码用于写入Linux X11剪贴板,但我不知道如何阅读它。

写入X11 Linux剪贴板:

clipboard <- function(x, sep="\t", row.names=FALSE, col.names=TRUE){
     con <- pipe("xclip -selection clipboard -i", open="w")
     write.table(x, con, sep=sep, row.names=row.names, col.names=col.names)
     close(con)
}

# Examples
vec <- c(1,2,3,4)

clipboard(vec)
clipboard(vec, ",", col.names=FALSE)
clipboard(vec, " ", row.names=TRUE)

如果我在LibreOffice Calc中突出显示一个选项,我想将其直接粘贴到R Studio中。我该如何完成这项任务?我在Ubuntu中安装了xclip。

sudo apt-get install xclip

2 个答案:

答案 0 :(得分:1)

谢谢A5C。下面的代码可以将剪贴板数据拉入R,但是正确的结果有点随机。

read.delim("clipboard")

只有在LibreOffice Calc(很多工作)的每一行末尾都返回时,它才会起作用。或者,如果我突出显示从最后一行开始的数据,最右边的列,向上和向左移动。或者,如果突出显示数据但不复制数据。只是突出它。不要碰到CTRL + C.突出显示数据并输入read.delim(&#34; clipboard&#34;)命令,R Studio将其拉入。奇怪但真实。否则我会收到以下错误。

  

警告消息:在read.table中(file = file,header = header,sep =   sep,quote = quote,:找不到最终的最终行   readTableHeader on&#39; clipboard&#39;

答案 1 :(得分:0)

使用xclip

您只需要撤消一些选项和功能。

需要将xclip命令的选项更改为输出,并且需要将函数write.table更改为read.table。

例如:

read.table(pipe("xclip -selection clipboard -o",open="r"))

使用file()

您可以使用Anando提供的解决方案,但在该解决方案的当前描述中,遗漏了一些细节。

命令read.table("clipboard")实际上正在使用命令.Internal(file(description, open, blocking, encoding, method, raw),该命令会分成几个选项

  • “X11_primary”(选中文字)
  • “X11_secondary”(某些程序仅使用某些辅助副本字段)
  • “X11_clipboard”(复制文字)

Ubuntu 16.04的情况,也许更普遍的Linu:x

我无法在源代码中轻松跟踪它,但根据行为,“剪贴板”选项默认为“X11_primary”(至少它在Ubuntu 16.04中具有相同的行为)。

如果您使用read.delim("X11_clipboard")代替read.delim("clipboard"),则会获得复制的文字而不是所选的文字。

请注意,使用X11_clipboard时可能会出错,例如:

> read.table("X11_clipboard")
Error in file(file, "rt") : 
  X11 clipboard selection is not supported on this system

在这种情况下,您必须在系统上安装Xmu头文件(即操作系统,例如Ubuntu)。我在我的情况下遇到了这个错误,并使用

解决了这个错误
sudo apt-get install libxmu-dev
sudo apt-get install xorg-dev

我不知道两者中的哪一个解决了它。但在此之后,当我从源代码重新编译R-base时,read.table("X11_clipboard")工作了。 (我无法通过从Ubuntu存储库安装来实现它)