在R中使用write_xlsx

时间:2018-08-23 11:42:02

标签: 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文件中打印行索引?

4 个答案:

答案 0 :(得分:1)

如果要使用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")

答案 1 :(得分:0)

在参数guest下使用下面的函数

row.names = TRUE

答案 2 :(得分:0)

也许最好的功能是使用write.xlsx()软件包中的openxlsxrowNames=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")

答案 3 :(得分: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 )