阻止 R write.xlsx 将宽数据转换为长数据

Stop R write.xlsx from turning wide data to long

我需要输出数据到xlsx,XLSX包好像用的比较多

但是,使用它似乎将宽数据变成长数据。我想在导出到 Excel.

时保持数据宽
library(xlsx)

myTable <- xtabs(mpg~carb+cyl, mtcars)

myTable

write.xlsx(myTable, "myFile.xlsx")

以上代码是演示问题的最小示例。

控制台会输出myTable,如下:

> myTable
    cyl
carb     4     6     8
   1 137.9  39.5   0.0
   2 155.4   0.0  68.6
   3   0.0   0.0  48.9
   4   0.0  79.0  78.9
   6   0.0  19.7   0.0
   8   0.0   0.0  15.0

但是,Excel 文件将具有相同的长格式数据,如下所示:

    carb    cyl Freq
1   1   4   137.9
2   2   4   155.4
3   3   4   0
4   4   4   0
5   6   4   0
6   8   4   0
7   1   6   39.5
8   2   6   0
9   3   6   0
10  4   6   79
11  6   6   19.7
12  8   6   0
13  1   8   0
14  2   8   68.6
15  3   8   48.9
16  4   8   78.9
17  6   8   0
18  8   8   15

如果有人能帮助我理解为什么会发生这种情况或如何纠正它,我将不胜感激。

?write.xlsx 的 "details" 部分提到:

If x is not a data.frame it will be converted to one.

我推测它是使用 as.data.frame 来实现的。

当使用as.data.frametable对象转换为data.frame时,table的原始结构变为"long"格式,这就是您在这里看到的。

要解决此问题,请使用 as.data.frame.matrix,如下所示:

write.xlsx(as.data.frame.matrix(myTable), "myFile.xlsx")