[R] reading in multiple data sets in 2 loops
Jeff Newmiller
jdnewmil at dcn.davis.ca.us
Sat Feb 6 21:01:23 CET 2016
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
More information about the R-help
mailing list