我想从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
答案 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命令的选项更改为输出,并且需要将函数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)
,该命令会分成几个选项
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存储库安装来实现它)