2

作为我几天前写的一个问题的后续,我终于弄清楚了如何复制到剪贴板以粘贴到其他应用程序中(阅读:Excel)。

但是,当使用该功能进行复制和粘贴时,变量列标题在粘贴时没有正确排列。

数据(取自我碰巧看到的一个流动数据示例):

data <- read.csv("http://datasets.flowingdata.com/post-data.txt")

复制功能:

write.table(file = pipe("pbcopy"), data, sep = "\t")

加载后,数据如下所示:

    id  views comments               category
1 5019 148896       28 Artistic Visualization
2 1416  81374       26          Visualization
3 1416  81374       26               Featured
4 3485  80819       37               Featured
5 3485  80819       37                Mapping
6 3485  80819       37           Data Sources

有一个没有列变量名的行号(1、2、3、4,...)

使用该read.table(pipe("pbpaste"))功能,它将重新加载R正常。

但是,当我将其粘贴到Excel, 或TextEdit时,第二个变量的列名将位于第一个变量列名槽中,如下所示:

id  views   comments    category    
1   5019    148896      28          Artistic Visualization
2   1416    81374       26          Visualization
3   1416    81374       26          Featured
4   3485    80819       37          Featured
5   3485    80819       37          Mapping
6   3485    80819       37          Data Sources 

这使尾随列没有列名。

有没有办法确保复制到的数据clipboard正确对齐和标记?

4

2 回答 2

4

行号在 R data.frame 中没有列名。它们不在原始数据集中,但它们被放入到剪贴板的输出中,除非您禁止它。该选项的默认设置为 TRUE,但您可以覆盖它。如果您想要这样的列作为命名列,则需要创建它。发送到excel时试试这个。

df$rownums <- rownames(df)
edf <- df[ c( length(df), 1:(length(df)-1))]   # to get the rownums/rownames first
write.table(file = pipe("pbcopy"), edf, row.names=FALSE, sep = "\t")
于 2012-02-03T17:36:29.607 回答
1

您可能只想将参数添加col.names=NA到对write.table(). 它的作用是在第一列的标题行中添加一个空字符串(一个空白列名)。

write.table(file = pipe("pbcopy"), data, sep = "\t", col.names=NA)

要查看差异,请比较这两个函数调用:

write.table(data[1:2,], sep="\t")
# "id"    "views" "comments"      "category"
# "1"     5019    148896  28      "Artistic Visualization"
# "2"     1416    81374   26      "Visualization"

write.table(data[1:2,], sep="\t", col.names=NA)
# ""      "id"    "views" "comments"      "category"
# "1"     5019    148896  28      "Artistic Visualization"
# "2"     1416    81374   26      "Visualization"
于 2012-02-03T17:37:33.890 回答