Hi Rui, I copied "list2env(i, envir = .GlobalEnv)" to the code, but I got the same error message of "first argument must be a named list". Maybe list2env cannot put in loop? the code works very well outside of for loop. One more thing, the difference file may have same sheet name. that's why I want to add file name in front of sheet name to avoid overwriting. It still works well outside of loop, but doesn't work in loop. I don't know how to fix the problems. Thank you, Kai
On Monday, October 3, 2022 at 12:09:04 PM PDT, Rui Barradas <ruipbarra...@sapo.pt> wrote: Hello, If in each iteration i is a list, try removing the call to names(). Try, in the loop, list2env(i, envir = .GlobalEnv) The error message is telling that list2env's first argument must be a named list and names(i) is an unnamed vector, it's i that's the named list (you even changed its names in the previous instruction). Hope this helps, Rui Barradas Às 18:38 de 03/10/2022, Kai Yang escreveu: > Hi Rui, > list2env(file1, envir = .GlobalEnv) is worked very well. Thank you. > > But when I tried to put the sample code into for loop. I got error message: > for(i in filenames){ > assign(i, import_list(paste0(i, ".xlsx", sep=""))) > names(i) <- paste(i, names(i), sep = "_") > list2env(names(i), envir = .GlobalEnv) > } > Error in list2env(names(i), envir = .GlobalEnv) : first argument must be a > named list > > It seems I cannot put names(i) into for loop, Could you please help me to > debug it? > Thank you,Kai On Monday, October 3, 2022 at 10:14:25 AM PDT, Rui Barradas > <ruipbarra...@sapo.pt> wrote: > > Hello, > > > list2env(file1, envir = .GlobalEnv) > > > will create data.frames dx1, dx2, etc, in the global environment. > If you really need the names file1_dx1, file1_dx2, etc, you can first > change the names > > > names(file1) <- paste("file1", names(file1), sep = "_") > > > and then run list2env like above. > > Hope this helps, > > Rui Barradas > > Às 16:51 de 03/10/2022, Kai Yang via R-help escreveu: >> Hi R team, >> I can use rio package to read excel file into R as a list. The excel file >> content multiple sheets (30 - 40 data sheets). I can convert each data >> elements into dataframe manually. I have multiple excel files with multiple >> data sheets. I need to load them into R and do the comparison for same sheet >> name from difference excel file. My current code is: >> library(rio) setwd ("C:/temp") >> filenames <- gsub("\\.xlsx$","", list.files(pattern="\\.xlsx$")) >> for(i in filenames){ >> assign(i, import_list(paste0(i, ".xlsx", sep=""))) >> } >> file1_dx1 <- file1[["dx1"]] >> >> file1_dx2 <- file1[["dx2"]] >> >> file1_dx3 <- file1[["dx3"]] >> >> file2_dx1 <- file1[["dx1"]] >> >> file2_dx2 <- file1[["dx2"]] >> ...... >> >> I hope the code can automatic converting the list (may have 30 - 40 lists) >> by adding file name (such as: filename_sheetname) and put it in for loop >> >> >> Thank you, >> Kai >> >> >> >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.