【发布时间】:2019-08-29 17:44:45
【问题描述】:
我想将数据从 R 输出到一个 excel 文件,并且一直在使用 openxlsx 包。
writeDataTable 是我一直在使用的函数。问题是我希望其中一列的条目是数字和文本的混合。由于 R 中数据框的一列必须具有所有相同类型的条目,因此所有内容都将转换为字符条目。
当我打开输出的 excel 文件时,我会在数字单元格的角落看到一个绿色的小三角形,告诉我它们是以文本形式存储的数字,并让我可以选择转换为数字。
我想知道是否可以让 R 在保存文件之前创建的工作簿对象中为我转换它。
我花了很多时间在谷歌上搜索这个问题,寻找可能有帮助的不同库,但到目前为止还没有找到任何东西。我有一个下面的例子。请注意,这不是我使用的确切数据框,而是用于演示目的。
df = data.frame(A = c('Dog', '5', '7.04'), B = c('Cat', '12', '1.23'))
wb = createWorkbook()
addWorksheet(wb, "Sheet2")
writeDataTable(wb, "Sheet2", df)
output_file = "C:\\Users\\johndoe\\documents\\excel_file.xlsx"
saveWorkbook(wb, output_file)
任何帮助将不胜感激。
【问题讨论】:
-
我用
library(xlsx) \ write.xlsx(mydata, "c:/mydata.xlsx")。 -
@TJ87,我认为这不能解决混合类列问题。
-
一种解决方法是创建一个带有两个选项卡的 template.xlsx。一个带有
Data选项卡的writeData进入另一个选项卡Formula具有Excel 公式到Data选项卡,例如单元格 A2=Data!A2。不理想(但会去掉绿色三角形),因为您首先需要将公式复制到 template.xlsx 中,并且文件大小会加倍,因为您要保留两个相同数据的选项卡 -
感谢 MKa,这绝对是一个可行的解决方法。是否可以在 R 中复制然后粘贴值,以便删除“数据”选项卡?然后是否可以将“公式”选项卡的一部分格式化为表格(我正在处理的数据将具有可变数量的行,因此无法预先格式化表格)。无论如何,我想我会尝试下面的 r2evans 方法,但最好有尽可能多的解决方案。