我正在尝试将R中的表写入Excel。以下是一些示例代码:
library(XLConnect)
wb <- loadWorkbook("C:\\Users\\Bob\\Desktop\\Example.xls", create=TRUE)
output <- as.table(output)
createSheet(wb, name="Worksheet 1")
writeWorksheet(wb, output, sheet="Worksheet 1")
saveWorkbook(wb)
但似乎writeWorksheet
函数将表转换为数据帧。这使得数据看起来混乱且未格式化。我希望保留表结构。我该如何修改上面的代码?
答案 0 :(得分:0)
这里的问题是writeWorksheet
将表对象转换为数据框。发生的方式是R基本上将其“融化”为长格式,而表格对象通常以“宽”格式打印到控制台。
这有点令人讨厌,但您通常必须手动将表格转换为与您之后的格式相匹配的数据框架。一个例子:
library(reshape2)
tbl <- with(mtcars,table(cyl,gear))
> tbl
gear
cyl 3 4 5
4 1 8 2
6 2 4 1
8 12 0 2
> as.data.frame(tbl)
cyl gear Freq
1 4 3 1
2 6 3 2
3 8 3 12
4 4 4 8
5 6 4 4
6 8 4 0
7 4 5 2
8 6 5 1
9 8 5 2
> tbl_df <- as.data.frame(tbl)
> final <- dcast(tbl_df,cyl~gear,value.var = "Freq")
> final
cyl 3 4 5
1 4 1 8 2
2 6 2 4 1
3 8 12 0 2
> class(final)
[1] "data.frame"
然后您应该能够将那个数据框写入Excel工作表而没有任何问题。