Ubuntu Linux 中从剪贴板复制 R

sta*_*tor 5 linux ubuntu r openoffice-calc libreoffice

我想从 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)
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get install xclip
Run Code Online (Sandbox Code Playgroud)

Sex*_*cus 5

使用xclip

您只需反转一些选项和功能即可。

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

例如:

read.table(pipe("xclip -selection clipboard -o",open="r"))
Run Code Online (Sandbox Code Playgroud)

使用文件()

您可以使用 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")in 代替,read.delim("clipboard")那么您将获得复制的文本而不是选定的文本。

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

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

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

sudo apt-get install libxmu-dev
sudo apt-get install xorg-dev
Run Code Online (Sandbox Code Playgroud)

不知道两个谁解决了。但在此之后,当我从源代码重新编译 R 库时,就read.table("X11_clipboard")可以了。(我无法通过从 Ubuntu 存储库安装来使其工作)