0
我目前使用openxlsx
将多个数据框写入1个工作表,每个工作表之间有一个很好的开放列。我想将这些数据框写入到这张表中,因为我希望将它们全部放在一张纸上进行分析,而不必通过10张纸进行分析。写入xlsx时写入列开始更新函数的更好方法
我的玩具数据集如下所示:
> random_dat
Letters Count Letters.1 Count.1 Letters.2 Count.2 Final
1 A 1 A1 0.21477659 Z 10 Z10
2 A 2 A2 0.92217670 X 12 X12
3 A 3 A3 0.49196523 T 14 T14
4 B 1 B1 0.08086314 Y 16 Y16
5 B 2 B2 0.80177983 Z 18 Z18
6 A 4 A4 0.35970442 X 20 X20
7 B 3 B3 0.21102868 T 22 T22
8 C 1 C1 0.75816713 Y 24 Y24
9 C 2 C2 0.59261425 Z 26 Z26
10 D 1 D1 0.73484393 X 28 X28
11 A 5 A5 0.32830008 T 30 T30
12 C 3 C3 0.21672748 Y 32 Y32
现在我创造我簿和工作表,并创建3种不同的data.frames
将被写入到我xlsx
文件。
library(openxlsx)
wb <- createWorkbook()
addWorksheet(wb,sheetName = "Output")
df1 <- random_dat[,1:2]
df2 <- random_dat[,2:3]
df3 <- random_dat[,3:7]
我现在已经准备好开始写这些给我的文件:
writeData(wb, sheet = "Output", df1, startCol = 1, startRow = 1, xy = NULL,
colNames = TRUE, rowNames = FALSE, headerStyle = NULL, withFilter = FALSE,
keepNA = FALSE)
start_col <- 1
start_col <- start_col+dim(df1)[2]+1
writeData(wb, sheet = "Output", df2, startCol = start_col, startRow = 1, xy = NULL,
colNames = TRUE, rowNames = FALSE, headerStyle = NULL, withFilter = FALSE,
keepNA = FALSE)
start_col <- start_col+dim(df1)[2]+1
writeData(wb, sheet = "Output", df1, startCol = start_col, startRow = 1, xy = NULL,
colNames = TRUE, rowNames = FALSE, headerStyle = NULL, withFilter = FALSE,
keepNA = FALSE)
start_col <- start_col+dim(df1)[2]+1
saveWorkbook(wb, "output.xlsx")
正如你所看到的,之后每次写,我用数据dim()
更新开始列,添加1作为请在data.frames
之间留出空栏。
心不是有更简单的方法来创建一个全球性的功能,可以只得到最后的书面data.frame
作为输入,例如更新列计数器变量我在一个简单的方法:
update_col<-function(df,envir = .GlobalEnv)
{
if(!("start_col" %in% ls())) start_col<<-1
start_col<<-start_col + dim(df)[2]
}
update_col(df1)
谢谢,这正是我想要的,因为我现在的储蓄我的数据帧到一个列表对象,我现在可以将这个功能应用于其中 –