【问题标题】:Copy an R data.frame to an Excel spreadsheet将 R data.frame 复制到 Excel 电子表格
【发布时间】:2014-07-11 18:37:41
【问题描述】:

我有一个与question 完全相同的问题。

作为我工作的一部分,我必须将 R Studio 控制台的输出复制到 excel 工作表中,以便制作 excel 图表。但是,R Studio 控制台使用格式化文本,excel 的读取效果不太好。作为补偿,我总是从 R Studio 控制台复制,粘贴到记事本,然后复制到 Excel。这样,当我粘贴表格时,我可以告诉 Excel 它实际上是固定宽度分隔的数据,而不仅仅是一团文本。

如何从 R Studio 控制台复制输出,使其作为无格式文本进入剪贴板,以便我可以将其直接粘贴到 Excel 中,从而将数字组织到不同的单元格中?这将非常有帮助,因为我不喜欢将表格复制/粘贴到记事本中,然后用 Excel 制作图表。

【问题讨论】:

  • 可能值得将您的声音添加到 RStudio 支持站点上的人的声音中,请求 RStudio 中的附加功能。

标签: r excel copy


【解决方案1】:

它的工作原理很简单。

首先,您必须在 Rstudio 的 Viewer 窗格中可视化您的数据(您可以使用函数View()),然后您应该从最后一个值开始选择第一个值,它是从下到上(见图)。请注意,应完全选择第一个单元格。最后,右键单击所选内容,复制,然后根据需要将其粘贴到 Excel 中,带或不带格式。

祝你好运!

更新:

基于此Post,另一种选择是创建一个新功能,通过clipboard 将您的data.frame 复制到Excel:

write.excel <- function(x,row.names=FALSE,col.names=TRUE,...) {
  write.table(x,"clipboard",sep="\t",row.names=row.names,col.names=col.names,...)
}

write.excel(my.df)

最后是 Excel 中的 Ctr+V :)

【讨论】:

  • 没有意识到从右下角到左上角与从左上角到右下角是不同的
  • View() 对我来说确实是关键,但是,有两件事:1)我没有从下到上……我只是在框外单击并拖动,直到一切正常突出显示; 2) 我无法选择列名行名标题(可能是因为我的对象是data.table 并且行名存储不同)。我的评论的最后一个警告是我在 Linux (Mint 17.1) 上并使用 LibreOffice。
  • 替代方案比主要解决方案要好得多,我认为应该删除主要解决方案或将其作为旁注。
  • 另请注意,使用此解决方案,放入剪贴板的数据大小确实有限,@MattV 的答案通过max.size 参数解决了这个问题。最后附上dec 参数的注释,根据您的安装方式,您希望像马特一样将其设置为, 或保持原样。
  • 我的首选方式是:1)查看(df)2)用鼠标点击/聚焦到df-explorer 3)按CTRL+A(全选)4)粘贴到Excel中
【解决方案2】:

这是迄今为止我发现的最简单的方法:

clipr::write_clip(my_df)

来源here

【讨论】:

    【解决方案3】:

    我通常使用以下函数:

    cb <- function(df, sep="\t", dec=",", max.size=(200*1000)){
        # Copy a data.frame to clipboard
        write.table(df, paste0("clipboard-", formatC(max.size, format="f", digits=0)), sep=sep, row.names=FALSE, dec=dec)
      }
    

    一些注意事项:

    • Max.size 允许您指定剪贴板在取消之前可以变成多大(以千字节为单位),现在它设置为 ~200MB。
    • 它非常适合将 R 数据帧从 R Studio 会话复制到 Excel(使用我的欧盟区域设置)。您可能需要调整分隔符/小数点符号以使其适用于美国版本。

    使用方法:

    df <- mtcars
    cb(df)
    # Paste in excel as 'values'
    

    【讨论】:

    • 不幸的是,对我不起作用。会不会是因为我有 Ubuntu 而你有其他操作系统?
    • 可能是,我运行的是Win10
    • 使用 dec = "."如果您不在欧盟并且希望您的小数采用句点表示法,请在函数定义中。
    【解决方案4】:

    根据我的经验没有方便的方法,我使用两种方法:

    对于小数据框,使用 RStudio 的 View(data.frame) 函数,如果你只复制没有标题的数据,它工作正常,但如果你想复制有标题,那么你必须先将它粘贴到记事本中,至少添加一个字符左上角的空单元格。

    对于大型数据帧,使用write.csvwrite.xls(来自包WriteXLS

    【讨论】:

      猜你喜欢
      • 2014-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多