在 R 中使用 write_xlsx

Using write_xlsx in R

我正在使用 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 文件中的行索引?

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

library(xlsx)
write.xlsx(df, "../mydata.xlsx", sheetName = "Sheet1", col.names = TRUE, row.names = TRUE)

如果您想使用 write_xlsx() 函数(来自 writexl 包),那么您只需使用 [=14= 将行名称放入数据框的第一列即可] 函数:

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

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

如果你有一个数据框列表,这可以很容易地适应创建多个 sheet 文件:

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")

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

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

它也适用于数据框列表。 Sheet 名称与列表中对象的名称匹配(例如,first_sheet 和 second_sheet)。

mtcars2 <- list(first_sheet=mtcars[1:5, ], second_sheet=mtcars[6:10, ])
openxlsx::write.xlsx(mtcars2, "mtcars2.xlsx", rowNames=TRUE)

问题是 write_xl 函数,属于 writexl 库。
这个库没有 java 依赖性,运行速度非常快,是我最喜欢写入 excel 的库。还有就是内存占用,比其他的要好很多。

恕我直言,最好的解决方案是使用内置的基本 R 代码而不是 excel 库。
所以,在数据文件中增加一个rowindex列是一个更好的方法:

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

关于 write_xl
的附加信息 为 sheet 提供名称:

write_xlsx( list( name_of_the_sheet = df ), name_of_the_file )

您可以简单地将列名添加到 df,使用 colnames("name_col1","name_col2", etc) 在使用 write_xlsx.

之前

抱歉!

可以使用(不是一个非常优雅的解决方案,但有效):

mtcars1<-data.frame(rownames(mtcars),mtcars)

mtcars1 有一个额外的列(第一列)由行名组成 mtcars的个数,第2列到第5列的mtcars内容相同

write_xlsx(mtcars1,"mtcars1.xlsx")

> dim(mtcars)
[1] 32 11

> dim(mtcars1)
[1] 32 12

重要的先到

install.packages("writexl")
library(writexl)