如何从R写到mac上的剪贴板

Lin*_*ird 20 clipboard r

我正在尝试使用write.table函数在mac os系统上写入我的剪贴板.从其他线程,我已经尝试过

data <- rbind(c(1,1,2,3), c(1,1, 3, 4), c(1,4,6,7))
clip <- pipe("pbcopy", "w")                       
write.table(data, file="clip")                               
close(clip)
Run Code Online (Sandbox Code Playgroud)

此代码不提供任何错误消息,但也不会将任何内容复制到剪贴板.有什么建议?

jub*_*uba 33

我在OS X下没有任何机器来测试它,但我认为你应该使用clip而不是"clip":

data <- rbind(c(1,1,2,3), c(1,1, 3, 4), c(1,4,6,7))
clip <- pipe("pbcopy", "w")                       
write.table(data, file=clip)                               
close(clip)
Run Code Online (Sandbox Code Playgroud)

clip是一个R对象.

如果你将一个字符串"clip"传递给file参数R会认为它是一个文件名,而不是在剪贴板中找到你的数据,你会在你的R会话工作目录中找到一个名为"clip"的文件,里面有你的数据.

  • @LinaBird:完美的答案值得勾选. (7认同)
  • 只打印一个空字符串:"" (2认同)

ags*_*udy 7

您可以使用Kmiscpackage,它包含2个用于剪贴板I/O(读/写)mult-iplatform的函数.

data <- data.frame(x1 = c(1,1,2,3), x2= c(1,1, 3, 4), x3= c(1,4,6,7))
write.cb(data)               ## wrapper to write.table in pipe("pbcopy") on MAC 
dat <- read.cb(header=T)     ## wrapper to read.table from pipe("pbpaste") on MAC
dat
  x1 x2 x3
1  1  1  1
2  1  1  4
3  2  3  6
4  3  4  7
Run Code Online (Sandbox Code Playgroud)

  • 不知怎的,这不适用于我的Mac !! 我收到一条错误消息:"close.connection(文件)出错:连接无效" (7认同)

hib*_*ado 6

在 Mac OS X 上试试这个:

copy_to_clipboard = function(x,sep="\t",col.names=T,...) { 
  write.table(x
             ,file = pipe("pbcopy")
             ,sep=sep
             ,col.names = col.names
             ,row.names = F
             ,quote = F,...)
}
Run Code Online (Sandbox Code Playgroud)

和这个:

paste_from_clipboard = function(sep="\t",header=T,...) {       
  read.table(pipe("pbpaste")
            ,sep=sep
            ,header=header,...) 
}
Run Code Online (Sandbox Code Playgroud)


jza*_*dra 6

这是一个老问题,但当我在搜索如何将某些东西放到剪贴板上时,它仍然是最受欢迎的.

现在有一个比这里的任何答案更好的解决方案:clipr包.

clipr::write_clip()是你所需要的全部.它适用于Windows,OS X和X11.

从帮助文件:"write_clip()尝试以有用的方式聪明地编写对象.如果传递data.frame或矩阵,它将使用write.table格式化它以粘贴到外部电子表格程序.否则将强制对象为字符向量.auto将检查对象类型,否则可以显式指定表或字符."

我还写了一个小帮助函数来将最后一个结果放到剪贴板上:

wc <- function(x = .Last.value) {
  clipr::write_clip(x)
}
Run Code Online (Sandbox Code Playgroud)


Sam*_*agd 5

我发现这个很好的代码可以直接从剪贴板导入 Mac 中的数据\nMarco Ghislanzoni 的答案

\n\n

诀窍是使用管道文件。R中的管道文件可以通过pipe函数来寻址。接下来你需要知道Mac剪贴板对应的管道文件的正确名称,即\xe2\x80\x9cpbpaste\xe2\x80\x9d。

\n\n

将所有内容放在一起后,您就拥有了 read.table 命令的正确语法:

\n\n

从 Mac OS X 剪贴板导入数据

\n\n
data <- read.table(pipe("pbpaste"), sep="\\t", header=T)\n
Run Code Online (Sandbox Code Playgroud)\n