而不是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)