我正在使用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文件中打印行索引?
答案 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()
软件包中的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")
答案 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 )