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 <ruipbarradas
at 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 <ruipbarradas at 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 at 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]]