2012-02-03 57 views
2

作为后续的question I wrote a few days ago排队,我终于想通了如何复制到剪贴板粘贴到其他应用程序(阅读:Excel中)。的R - 管道(“pbcopy”)列不粘贴

然而,在使用功能时,复制和粘贴,变量列标题不粘贴时排队正确。

数据(从一个流动的数据例如我碰巧采取在看):

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

行号没有在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") 
+0

“提供的正是我一直在寻找row.names = FALSE'。谢谢。 – mikebmassey 2012-02-03 17:44:44

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"