[R] how to read different files into different objects in one time?
Jeff Newmiller
jdnewmil at dcn.davis.CA.us
Thu Dec 20 06:11:41 CET 2012
The short answer is: don't try. You really don't want dozens of different objects in memory that you didn't name yourself.
What you want instead is a list of objects. You can start with a vector of filenames and use lapply to create another list containing the data frames. For convenience you can then set the list element names to the names of the files.
fnames <- list.files()
dta <- lapply( fnames, function(i){read.table(i, header= TRUE) })
names(dta) <- fnames
You can access these data frames using the $ or "[[" operators.
dta$G1.txt
dta[["G1.txt"]]
or
dta[[2]]
Read more about it in the Introduction to R document supplied with R.
---------------------------------------------------------------------------
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
---------------------------------------------------------------------------
Sent from my phone. Please excuse my brevity.
Yao He <yao.h.1988 at gmail.com> wrote:
>Dear All
>
>I have a lot of files in a directory as follows:
>"02-03.txt" "03-04.txt" "04-05.txt" "05-06.txt" "06-07.txt"
>"07-08.txt" "08-09.txt"
> "09-10.txt" "G0.txt" "G1.txt" "raw_ped.txt"
>..........................
>
>I want to read them into different objects according to their
>filenames,such as:
>02-03<-read.table("02-03.txt",header=T)
>03-04<-read.table("03-04.txt",header=T)
>I don't want to type hundreds of read.table(),so how I read it in one
>time?
>I think the core problem is that I can't create different objects'
>name in the use of loop or sapply() ,but there may be a better way to
>do what I want.
>
>Thanks a lot
>
>Yao He
>
>Yao He
More information about the R-help
mailing list