我正在使用 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文件中的行索引吗?
如果您想使用该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")
也许最好的功能write.xlsx()
来自openxlsx
包。rowNames=TRUE
或row.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")
使用以下带参数的函数 row.names = TRUE
library(xlsx)
write.xlsx(df, "../mydata.xlsx", sheetName = "Sheet1", col.names = TRUE, row.names = TRUE)
问题是属于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 )