[R] reading in multiple data sets in 2 loops

Jeff Newmiller
2016-02-06T20:01:23Z

Normally one wants not only to read the data, but to save it in an object
as well. Here are some modifications toward achieving that (untested):

header<-"C:/Research3/simulation1/second_gen/pheno_1000ind_4000m_add_h70_prog"
fnums <- expand.grid( a = 1:2, b = 2:3 )
result <- vector( "list", nrow( fnums ) )
for ( idx in seq.int( nrow( fnums ) ) ) {
   result[[ idx ]] <- read.csv( paste( paste( header
                                            , fnums$a[ idx ]
                                            , fnums$b[ idx ]
                                            , sep = "_"
                                            )
                                     , ".csv"
                                     , sep = ""
                                     )
                              )
   # optionally remember which file each data record came from
   # assumes none of your input columns are labelled "a" or
"b"
   result[[ idx ]]$a <- fnums$a[ idx ]
   result[[ idx ]]$b <- fnums$b[ idx ]
}

# you could also put all of the data into one data frame
result2 <- do.call( rbind, result )

# you could also do all of this in one dplyr pipe
library(dplyr)
result3 <- (   expand.grid( a = 1:2, b = 2:3 )
            %>% rowwise # work through each row of the a/b combinations
            %>% do( data.frame( a = .$a
                              , b = .$b
                              , read.csv( paste( paste( header
                                                      , .$a
                                                      , .$b
                                                      , sep = "_"
                                                      )
                                               , ".csv"
                                               , sep = ""
                                               )
                                        )
                              )
                  )
            %>% as.data.frame
            )


On Sat, 6 Feb 2016, Jim Lemon wrote:

> Hi Reka,
> Try this:
>
> header<-"C:/Research3/simulation1/second_gen/pheno_
> 1000ind_4000m_add_h70_prog"
> for(index1 in 1:2) {
> for(index2 in 2:3)
>
read.csv(paste(paste(header,index1,index2,sep="_"),".csv",sep=""))
> }
>
> Jim
>
> On Sat, Feb 6, 2016 at 4:53 PM, Reka Howard <howardr at iastate.edu>
wrote:
>
>> Hello,
>> I have over 1000 csv data sets I need to read into R, so I want to read
>> them in using a loop. The data sets are named as
>> pheno_1000ind_4000m_add_h70_prog_1_2.csv,
>> pheno_1000ind_4000m_add_h70_prog_1_3.csv, ... so I need 2 loops (for
the
>> last 2 numbers in the names). What I would like to do is the following:
>>
>> setwd("C:/Research3/simulation1/second_gen")
>> d1<-read.csv("pheno_1000ind_4000m_add_h70_prog_1_2.csv")
>> d2<-read.csv("pheno_1000ind_4000m_add_h70_prog_1_3.csv")
>> d3<-read.csv("pheno_1000ind_4000m_add_h70_prog_2_3.csv")
>> .
>> .
>> .
>>
>> I am wondering how I can accomplish this with a loop. Any suggestion is
>> appreciated!
>> I tried the following but it does not work:
>>
>> data <- lapply(
>>
>>
paste(("C:/Research3/simulation1/second_gen/pheno_1000ind_4000m_add_h70_prog_",[1:2],"_",[2:3],".csv",sep=''),
>> read.csv, header=TRUE, sep=',' )
>> names(data) <- paste("d", LETTERS[1:3], sep='')
>>
>> Thanks!
>> Reka
>>
>>         [[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]]
>
> ______________________________________________
> 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.
>

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live
Go...
                                       Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k