在 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=TRUE
或 row.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)
我正在使用 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=TRUE
或 row.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)