作为question I wrote a few days ago的后续,我终于想出了如何复制到剪贴板以粘贴到其他应用程序(阅读: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
的数据是否已正确对齐并标记?
答案 0 :(得分: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")
答案 1 :(得分: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"