Вместо i = df
вы должны назвать элементы списка.Для вашего цикла это будет означать:
file_output = "C:/test/test.xlsx"
for(i in 1:2){
df <- iris[i,]
out <- list(df)
names(out) <- i
write_xlsx(out, file_output)
}
Однако это приведет к одному файлу на data.frame, поскольку write_xlsx
не добавляется к существующим файлам (по крайней мере, насколько мне известно).Если вы хотите иметь только один файл с листами для различных data.frames, вам придется адаптировать свой код:
file_output = "C:/test/test.xlsx"
vars <- 1:2
out <- vector(mode = "list", length = length(vars))
for(i in vars){ # if you use variable names in vars, use seq_along(vars) instead of vars
out[[i]] <- iris[i,]
}
names(out) <- vars
write_xlsx(out, file_output)
Так как я не вижу никаких преимуществ в использовании цикла здесь, я 'даже предложил бы использовать map
из пакета purrr
или lapply
:
file_output = "C:/test/test.xlsx"
vars <- 1:2
out <- map(vars, ~ iris[.x,])
names(out) <- vars
write_xlsx(out, file_output)