5

我正在使用 write_xlsx 命令将数据从 R 导出到 excel,

这是我拥有的数据框,

 >df
     X1
 A   76
 B   78
 C   10

使用 ,

write_xlsx(df, "../mydata.xlsx")

在 excel 中给出以下输出,

 >df

1  76
2  78
3  10

列名出现在 xlsx 文件中,但不打印每行的索引。有什么方法可以打印excel文件中的行索引吗?

4

4 回答 4

6

如果您想使用该write_xlsx()函数(来自writexl包),那么您只需使用该函数将行名放入数据框的第一列cbind()

mtcars1 <- cbind(" "=rownames(mtcars), mtcars)
writexl::write_xlsx(mtcars1, "mtcars1.xlsx")

我已经使用" "=了,所以 A 列的标题将显示为空白(它将是一个空格)。如果需要,它可以很容易地换成其他名称(例如,Model=)。

如果您有数据框列表,则可以轻松调整以创建多表文件:

mtcars2 <- list(Sheet1=mtcars[1:5, ], Sheet2=mtcars[6:10, ])
mtcars2_1 <- lapply(mtcars2, function(x) cbind(" "=rownames(x), x))
writexl::write_xlsx(mtcars2_1, "mtcars2.xlsx")
于 2020-12-08T04:06:50.657 回答
2

也许最好的功能write.xlsx()来自openxlsx包。rowNames=TRUErow.names=TRUE将行名写入 A 列。

openxlsx::write.xlsx(mtcars, "mtcars.xlsx", row.names=TRUE)

它也适用于数据框列表(尽管我不确定是否可以命名工作表)。

mtcars2 <- list(mtcars[1:5, ], mtcars[6:10, ])
openxlsx::write.xlsx(mtcars2, "mtcars2.xlsx")
于 2020-12-08T04:31:54.277 回答
1

使用以下带参数的函数 row.names = TRUE

library(xlsx)
write.xlsx(df, "../mydata.xlsx", sheetName = "Sheet1", col.names = TRUE, row.names = TRUE)
于 2018-08-23T11:47:07.567 回答
0

问题是属于writexl库的write_xl函数。 这个库没有 java 依赖,运行速度非常快,是我最喜欢的用于写入 excel 的库。另外关于内存使用情况,它比其他的要好得多。

恕我直言,最好的解决方案是使用内置的基本 R 代码而不是 excel 库。
因此,向数据文件添加 rowindex 列是一种更好的方法:

df$rowindex <- as.numeric(rownames(df))
df <- df[,c("rowindex","X1")]  #to fix the column order

有关write_xl的附加信息
要为工作表提供名称:

write_xlsx( list( name_of_the_sheet = df ), name_of_the_file )
于 2021-02-11T16:36:29.493 回答