R 从剪贴板复制 Ubuntu Linux

R Copy from Clipboard in Ubuntu Linux

我想从 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

谢谢A5C。以下代码确实可以将剪贴板数据拉入 R,尽管正确的结果有些随机。

read.delim("clipboard")

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

Warning message: In read.table(file = file, header = header, sep = sep, quote = quote, : incomplete final line found by readTableHeader on 'clipboard'

使用 xclip

你只需要反转一些选项和功能。

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

例如:

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

使用文件()

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

命令 read.table("clipboard") 有效地使用了命令 .Internal(file(description, open, blocking, encoding, method, raw),它分为多个选项

  • "X11_primary"(已选择文字)
  • "X11_secondary"(某些辅助复制字段仅供某些程序使用)
  • "X11_clipboard"(复制文本)

Ubuntu 16.04 的情况,也许更一般 Linu:x

我无法在源代码中轻松找到它,但根据行为,"clipboard" 选项似乎默认为 "X11_primary"(至少它在 [=67 中具有相同的行为=] 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

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

解决了它
sudo apt-get install libxmu-dev
sudo apt-get install xorg-dev

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