将数据帧写入多个Excel文件

时间:2018-12-08 22:28:51

标签: r excel dataframe for-loop dplyr

我具有以下形式的数据框:

    name_1 name_2 col_1 col_2 col_3
 [1,] a     d      1     4     7  
 [2,] b     e      2     5     8  
 [3,] c     f      3     6     9  

我要分别选择列1,2和3的列name_2,并将它们写入3个不同工作表的一个excel文件中。

换句话说,我想在我的excel文件的第一页中包含“ name_2”和“ col_1”列,在第二页中具有“ name_2”和“ col_2”列,并在第三页中具有“ name_2”和“ col_3”列。

我正在使用以下for循环

for(i in 2:5){
  df <- data.frame(my file)
  df <- df[,c(2,i+1)]
  write.xlsx(x = df, file = "/pathtofolder/excel.xlsx", sheetName = "column_name",append=TRUE, row.names = T, col.names = T)
}

但是最终的excel文件被最后的df覆盖。

您知道我该怎么做吗?

谢谢

1 个答案:

答案 0 :(得分:0)

尝试一下:

library(openxlsx)

wb <- createWorkbook("/pathtofolder/excel.xlsx")

for(i in 2:4){
  addWorksheet(wb, sheetName = colnames(df)[i+1])
  writeData(wb = wb, sheet = colnames(df)[i+1], x = df[,c(2,i+1)], colNames = F)
}

saveWorkbook(wb,"/pathtofolder/excel.xlsx", overwrite = T)

如果Excel文件已经存在,请使用loadWorkbook代替createWorkbook