Моя цель - экспортировать несколько фреймов данных на один лист Excel.
Мне нужен общий код, который работает с любым списком.
Схема данных
# df1
a
1 1
2 1
# df2
b c
1 3 4
# vec
[1] "string"
Желаемый результат
[,1] [,2]
[1,] "a" NA
[2,] "1" NA
[3,] "1" NA
[4,] NA NA
[5,] "b" "c"
[6,] "3" "4"
[7,] NA NA
[8,] "string" NA
Данные
df1 <- data.frame(a = c(1, 1))
df2 <- data.frame(b = 3, c = 4)
vec <- "string"
l <- list(df1, df2, vec)
Как вы сказали, вам нужно экспортировать в один лист Excel. Вы можете использовать {openxlsx}
с простым циклом, чтобы вычислить начальную строку на листе Excel для каждого элемента в списке.
library(openxlsx)
wb <- createWorkbook()
addWorksheet(wb, "sheet1")
sr <- 1 # startRow
for(x in lst) {
writeData(wb, "sheet1", x, startRow = sr, colNames = !is.null(colnames(x)))
sr <- sr + ifelse(!is.null(nrow(x)), nrow(x) + !is.null(colnames(x)), length(x)) + 1L
}
saveWorkbook(wb, "test.xlsx", overwrite = TRUE)
test.xlsx
Я хочу пространство между элементами