19

我有一个关于以 txt 或 excel 格式保存数据帧的问题。我在 R 中有一个数据框,但是当我保存它时:

  1. 例如,当我在 Excel 中打开保存的数据框时,首先使用write.table()函数,所有列都分组在一列中,您必须在 Excel 中分隔列,否则可能会丢失数据。函数也是如此write.csv()

是否可以在 R 中保存所有列分开的数据框。谢谢。

4

5 回答 5

29

我最喜欢的实现方式(因为我经常需要与非 R 用户共享在 R 中处理的数据帧,并且他们只需双击并在 Excel 中很好地打开它很方便)是:

write.table(x,"filename.txt",sep="\t",row.names=FALSE)

如上所述,sep="\t"参数选项卡分隔您的文件,但我认为除非需要,否则删除行名也很有用。

于 2016-09-07T20:31:58.513 回答
2

的默认分隔符write.table是一个空格。虽然.txt通常用于表示电子表格,但它真正表明它是一个文本文件。如果您想要的是.tsv. 或带有制表符分隔值的文件,那么您可以尝试write.table(x,sep="\t"). 这将制表符分隔您的文件,当您尝试打开文件时,excel 应该会选择它。我真的建议?write.table(并且?read.table在我们这样做的时候)好好阅读。因为真的,即使你的代码是完美的,如果你不正确地读取或写入数据,那又有什么意义呢?

于 2013-08-29T15:47:37.693 回答
1

您保存的文件可能很好,您只是将其错误地加载到 Excel 中(没有示例很难确定)。当您导入 Excel 时,有一些方法可以指定分隔符是什么以及其他选项。您还可以通过在write.table. 还要检查您的区域设置,默认分隔符可能会有所不同,具体取决于您的计算机是否认为它位于欧洲(或某些国家/地区)或美国(或某些其他国家/地区),可能是您的 R 版本和您的 excel 版本不同意您所在的区域(以及因此使用的分隔符)。

您可能还想查看 XLConnect 包,它将直接创建 excel 文件,而无需通过文本文件。(还有几个其他包也可以写入 excel 文件,但 XLConnect 是我使用过的最好的包)。

将数据框或矩阵快速传输到 Excel 的另一个选项(至少在 Windows 上,不确定这是否适用于其他操作系统)是使用带有file="clipboard"and的写表sep="\t",然后在 Excel 窗口中单击一个单元格,然后执行“粘贴”并且数据将通过剪贴板而不是文件保存在 excel 中。

于 2013-08-29T15:26:16.177 回答
0

您应该可以使用write.csv().

这是一个适用于我的机器的示例。我创建一个data.frame,用 保存它write.csv,然后在 Excel 中打开它,没有问题。

a <- 1:5
b <- 6:10
c <- 11:15

df <- data.frame(a,b,c)

write.csv(df, 'test2.csv')
于 2013-08-29T15:25:28.813 回答
0

在下面使用

install.packages(openxlsx)
library(openxlsx)


write.xlsx(dataframe,"C:/Users/santoshr/Desktop/export10.xlsx",sheetName = "Sheet1",col.names = TRUE,showNA=FALSE)
于 2017-12-01T12:28:27.350 回答