Hello Kai, Just as you did to store the data inside of rr. Try class(rr[[1]]) or class(rr[[2]]) and so on to explore a bit more. The variable rr is a list that contains dataframes within it. To access the dataframes you must use the syntax rr[[i]] where i is the index of the element of the list (or the number of the dataframe in your case). For example:
df1 <- rr[[1]] class(df1) # Check if this is class "data.frame". df2 <- rr[[2]] class(df2) You can also try other ways to store the dataframes more efficiently. This is just a quick-and-dirty solution to the code you provided. I recommend reading more about lists in R to understand how they work and how they differ from other data structures like vectors. Hope this helps, Warm regards. Migdonio G. On Fri, Jul 9, 2021 at 2:24 PM Kai Yang <yangkai9...@yahoo.com> wrote: > Hi Migdonio, > > I did try your code: > > # Initialize the rr variable as a list. > > rr <- as.list(rep(NA, nrow(ora))) > > > > # Run the for-loop to store all the CSVs in rr. > > for (j in 1:nrow(ora)) > > { > > mycol <- ora[j,"fname"] > > mycsv <- paste0(mycol,".csv") > > rdcsv <- noquote(paste0("w:/project/_Joe.B/Oracle/data/", mycsv)) > > rr[[j]] <- read.csv(rdcsv) > > } > > > this code is working, but rr is not a data frame, R said: Large list ( 20 > elements .....). how can I use it as a data frame one by one? > > Thank you for your help > > Kai > > On Friday, July 9, 2021, 11:39:59 AM PDT, Migdonio González < > migdonio.gonzale...@gmail.com> wrote: > > > It seems that your problem is that you are using single quotes inside of > the double quotes. This is not necessary. Here is the corrected for-loop: > > for (j in 1:nrow(ora)) > { > mycol <- ora[j,"fname"] > mycsv <- paste0(mycol,".csv") > rdcsv <- noquote(paste0("w:/project/_Joe.B/Oracle/data/", mycsv)) > rr <- read.csv(rdcsv) > } > > Also note that the rr variable will only store the last CSV, not all CSV. > You will need to initialize the rr variable as a list to store all CSVs if > that is what you require. Something like this: > > # Initialize the rr variable as a list. > rr <- as.list(rep(NA, nrow(ora))) > > # Run the for-loop to store all the CSVs in rr. > for (j in 1:nrow(ora)) > { > mycol <- ora[j,"fname"] > mycsv <- paste0(mycol,".csv") > rdcsv <- noquote(paste0("w:/project/_Joe.B/Oracle/data/", mycsv)) > rr[[j]] <- read.csv(rdcsv) > } > > Regards > Migdonio G. > > On Fri, Jul 9, 2021 at 1:10 PM Kai Yang via R-help <r-help@r-project.org> > wrote: > > Hello List, > I use for loop to read csv difference file into data frame rr. The data > frame rr will be deleted after a comparison and go to the next csv file. > Below is my code: > for (j in 1:nrow(ora)) > { > mycol <- ora[j,"fname"] > mycsv <- paste0(mycol,".csv'") > rdcsv <- noquote(paste0("'w:/project/_Joe.B/Oracle/data/", mycsv)) > rr <- read.csv(rdcsv) > } > but when I run this code, I got error message below: > Error in file(file, "rt") : cannot open the connection > In addition: Warning message: > In file(file, "rt") : > cannot open file > ''w:/project/_Joe.B/Oracle/data/ASSAY_DEFINITIONS.csv'': No such file or > directory > > so, I checked the rdcsv and print it out, see below: > [1] 'w:/project/_Joe.B/Oracle/data/ASSAY_DEFINITIONS.csv' > [1] 'w:/project/_Joe.B/Oracle/data/ASSAY_DISCRETE_VALUES.csv' > [1] 'w:/project/_Joe.B/Oracle/data/ASSAY_QUESTIONS.csv' > [1] 'w:/project/_Joe.B/Oracle/data/ASSAY_RUNS.csv' > [1] 'w:/project/_Joe.B/Oracle/data/DATA_ENTRY_PAGES.csv' > [1] 'w:/project/_Joe.B/Oracle/data/DISCRETE_VALUES.csv' > [1] 'w:/project/_Joe.B/Oracle/data/ENTRY_GROUPS.csv' > [1] 'w:/project/_Joe.B/Oracle/data/GEMD_CODELIST_GROUPS.csv' > [1] 'w:/project/_Joe.B/Oracle/data/GEMD_CODELIST_VALUES.csv' > [1] 'w:/project/_Joe.B/Oracle/data/GEMD_LOT_DEFINITIONS.csv' > [1] 'w:/project/_Joe.B/Oracle/data/GEMD_SAMPLES.csv' > [1] 'w:/project/_Joe.B/Oracle/data/MOLECULAR_WAREHOUSE.csv' > [1] 'w:/project/_Joe.B/Oracle/data/QUESTION_DEFINITIONS.csv' > [1] 'w:/project/_Joe.B/Oracle/data/QUESTION_GROUPS.csv' > [1] 'w:/project/_Joe.B/Oracle/data/RESPONDENTS.csv' > [1] 'w:/project/_Joe.B/Oracle/data/RESPONSES.csv' > [1] 'w:/project/_Joe.B/Oracle/data/SAMPLE_LIST.csv' > [1] 'w:/project/_Joe.B/Oracle/data/SAMPLE_LIST_NAMES.csv' > [1] 'w:/project/_Joe.B/Oracle/data/SAMPLE_PLATE_ADDRESSES.csv' > [1] 'w:/project/_Joe.B/Oracle/data/STORAGE_UNITS.csv' > it seems correct. I copy and paste it into a code : > rr <- read.csv( 'w:/project/_Joe.B/Oracle/data/RESPONDENTS.csv') > and it works fine. > Can someone help me debug where is the problem in my for loop code? > Thanks, > 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.