[R] error message from read.csv in loop

Migdonio González m|gdon|o@gonz@|ez02 @end|ng |rom gm@||@com
Fri Jul 9 21:49:05 CEST 2021


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 <yangkai9999 using 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.gonzalez02 using 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 using 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 using 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]]



More information about the R-help mailing list