2012-02-03 61 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"