Search code examples
rfor-loopdplyrwritexl

Writing .xlsx files, with conditional filepaths


I want to manipulate different .csv files through a loop and a list. Works fine, but I for the output, I have to create many .xlsx files and the files have to be named according to the value of a certain variable.

I've already tried piping the write_xlsx function with ifelse condition like:

for (i in 1:length(files)) {
files[[i]] %>% 
write_xlsx(files[[i]], paste(ifelse(x="test1", "/Reportings/test1.xlsx", 
ifelse(x="test2", "/Reportings/test2.xlsx", "test3")
}

I expect that multiple .xlsx files will be created in the folder Reportings.


Solution

  • Not easy to answer precisely with the information you gave, but here is a minimal example that seems to do what you want :

    According that your list is composed of matrix, that x is a variable and that it always has the same value.

    df=data.frame(x=rep("test1",3),y=rep("test1",3))
    df2=data.frame(x=rep("test2",3),y=rep("test2",3))
    
    files=list(df,df2)
    files[[1]]$x[1]
    
    for(i in 1:length(files)){
    write.xlsx(files[[i]],paste0("Reportings/",files[[i]]$x[1],".xlsx"))
    }