Skip to content

how to read different files into different objects in one time?

5 messages · Yao He, Jorge I Velez, Heramb Gadgil +1 more

#
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
#
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:

            
7 days later
#
Man, if that medicine doesn't cure you of wanting to create dozens of different objects in memory, I don't know what will. Let's see:

1) Creates a potentially large number of global objects with names unrelated to their content
2) Creates and updates a global variable for future race condition debugging fun
3) Reinvents the name lookup symbol table metadata of environments or lists, without the actual functionality
4) Uses obscure, experimental functions
5) Includes creative spelling to force the user to pay close attention in order to use the resulting metadata

and I still remain unconvinced that the result of this headache (an indefinitely large set of separate variables in the global environment) has any redeeming value. Sometimes it is better to re-phrase the question than to answer it regardless of cost.
---------------------------------------------------------------------------
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.
Heramb Gadgil <heramb.gadgil at gmail.com> wrote: