У меня есть несколько списков, каждый из которых включает несколько фреймов данных. Предположим, что первый список похож на:
df1 <- data.frame("id" = 1:2, "weight" = c(10,15), "Name" = c("ha","hu"))
df2 <- data.frame("id" = 3:4, "weight" = c(20,15), "Name" = c("hi","he"))
df3 <- data.frame("id" = 5:6, "weight" = c(10,20), "Name" = c("ho","hy"))
my_list_1 <- list(df1, df2, df3)
и второй:
df4 <- data.frame("id" = 7:8, "weight" = c(5,6), "Name" = c("ma","mu"))
df5 <- data.frame("id" = 9:10, "weight" = c(20,12), "Name" = c("mi","me"))
df6 <- data.frame("id" = 11:12, "weight" = c(8,20), "Name" = c("mo","my"))
my_list_2 <- list(df4, df5, df6)
по правде говоря, их гораздо больше!
Я хочу написать цикл for
и записать в каждом цикле один из lists
в Excel worksheet
с тем же именем, что и список .
Dataframes
должен располагаться один за другим на листе, а между любыми двумя dataframes
есть две пустые строки. Я попробовал следующий код:
library(openxlsx)
wb <- createWorkbook()
for (i in 1:2){
addWorksheet(wb, paste0("my_list_",i))
currRow <- 1
for(j in 1:3){
cs <- CellStyle(wb) + Font(wb, isBold=TRUE) + Border(position=c("BOTTOM", "LEFT", "TOP", "RIGHT"))
addDataFrame(eval(parse(text=paste0("my_list_",i,"[[j]]"))),
sheet=paste0("my_list_",i),
startRow=currRow,
row.names=FALSE,
colnamesStyle=cs)
currRow <- currRow + eval(parse(text=paste0("nrow(my_list_",i,"[[j]])"))) + 2
}
}
saveWorkbook(wb, file = "myfile.xlsx"))
но я получил ошибку:
Error in as.vector(x, "character") :
cannot coerce type 'environment' to vector of type 'character'
Буду признателен за любой вклад!