Thanks Jeff. I had tried the 'list' approach as well but got stuck with the
below error:

"Error in `$<-.data.frame`(`*tmp*`, "date", value = "20100701") :
  replacement has 1 rows, data has 0"

Couldnt find a work around to this, hence resorted to the multiple
dataframes approach. Any insights into this?


On Tue, Apr 24, 2012 at 9:51 PM, Jeff Newmiller <jdnew...@dcn.davis.ca.us>wrote:

> Programatically dealing with large numbers of separately-named objects
> leads to syntactically complicated code that is hard to read and maintain.
>
> Load the data frames into a list so you can access them by numeric or
> named index, and then getting at the loaded data will be much easier.
>
> fnames = list.files(path = getwd())
> # preallocating the list for efficiency (execution speed)
> dtalist <- vector( "list", length(fnames) )
> for (i in seq_len(length(fnames))){
>  dtalist[[i]] <- read.csv.sql(fnames[i], sql = "select * from file where
> V3 == 'XXX' and V5=='YYY'",header = FALSE, sep= '|', eol ="\n"))
>  dtalist[[i]]$date <-  substr(fnames[i],1,8))
> }
> names(dtalist) <- fnames
> # now you can optionally refer to dtalist$file20120424.csv or
> dtalist[["file20120424"]] if you wish.
> ---------------------------------------------------------------------------
> Jeff Newmiller                        The     .....       .....  Go Live...
> DCN:<jdnew...@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.
>
>
>
> Shivam <shivamsi...@gmail.com> wrote:
>
> >Reposting in hope of a reply.
> >
> >On Tue, Apr 24, 2012 at 1:12 AM, Shivam <shivamsi...@gmail.com> wrote:
> >
> >> Thanks for the quick response. It works for an individual dataframe,
> >but I
> >> have many dataframes. This is the code so far
> >>
> >> fnames = list.files(path = getwd())
> >> for (i in 1:length(fnames)){
> >> assign(paste("file",i,sep=""),read.csv.sql(fnames[i], sql = "select *
> >from
> >> file where V3 == 'XXX' and V5=='YYY'",header = FALSE, sep= '|', eol =
> >"\n"))
> >> }
> >>
> >> This generates dataframes named as as file1,file2,...,file250. Is
> >there a
> >> way to do something like below within the same loop?
> >>
> >> file1$date = substr(fnames[1],1,8))
> >> file2$date = substr(fnames[2],1,8))
> >> .
> >> .
> >> file250$date = substr(fnames[250],1,8))
> >>
> >> assign(paste("file",i,sep="")$date doesnt work.
> >>
> >> Any help?
> >>
> >>
> >>
> >>
> >>
> >> On Tue, Apr 24, 2012 at 12:01 AM, MacQueen, Don
> ><macque...@llnl.gov>wrote:
> >>
> >>> This little example might help.
> >>>
> >>> > foo <- data.frame(a=1:10, b=letters[1:0])
> >>> > foo
> >>>    a b
> >>> 1   1 a
> >>> 2   2 a
> >>> 3   3 a
> >>> 4   4 a
> >>> 5   5 a
> >>> 6   6 a
> >>> 7   7 a
> >>> 8   8 a
> >>> 9   9 a
> >>> 10 10 a
> >>> > foo$date <- '20120423'
> >>> > foo
> >>>    a b     date
> >>> 1   1 a 20120423
> >>> 2   2 a 20120423
> >>> 3   3 a 20120423
> >>> 4   4 a 20120423
> >>> 5   5 a 20120423
> >>> 6   6 a 20120423
> >>> 7   7 a 20120423
> >>> 8   8 a 20120423
> >>> 9   9 a 20120423
> >>> 10 10 a 20120423
> >>>
> >>>
> >>> In other words, immediately after reading the data into a data
> >frame, add
> >>> a date column as in the example. You'll have to extract the date
> >from the
> >>> filename, of course.
> >>>
> >>> -Don
> >>>
> >>>
> >>> --
> >>> Don MacQueen
> >>>
> >>> Lawrence Livermore National Laboratory
> >>> 7000 East Ave., L-627
> >>> Livermore, CA 94550
> >>> 925-423-1062
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> On 4/23/12 9:29 AM, "Shivam" <shivamsi...@gmail.com> wrote:
> >>>
> >>> >Hi,
> >>> >
> >>> >I am relatively new to R. Have scourged the help files and the www
> >but
> >>> >havent been able to get a solution.
> >>> >
> >>> >I have around 250 csv files, one file for each date. They have
> >columns of
> >>> >all types, numeric, string etc. The name of each file is the date
> >in the
> >>> >form of 'yyyymmdd'. There is no column within the file which helps
> >me
> >>> >identify the date on which the file was generated, only the
> >filename has
> >>> >that info.
> >>> >
> >>> >I am selecting some data (using read.csv.sql) from each file and
> >creating
> >>> >a
> >>> >dataset for each day. Ultimately I will combine all the datasets. I
> >can
> >>> >accomplish the select and combine part, but after combining I wont
> >have a
> >>> >record as to the date corresponding to the data.
> >>> >
> >>> >Hence I want to insert the filename as a column in the respective
> >file to
> >>> >help me in identifying to what date each data row belongs to.
> >>> >
> >>> >Sorry for the long mail, but wanted to make myself clear. Any help
> >would
> >>> >be
> >>> >greatly appreciated.
> >>> >
> >>> >Thanks in advance,
> >>> >Shivam
> >>> >
> >>> >       [[alternative HTML version deleted]]
> >>> >
> >>> >______________________________________________
> >>> >R-help@r-project.org mailing list
> >>> >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.
> >>>
> >>>
> >>
> >>
> >> --
> >> *Victoria Concordia Crescit*
> >>
> >
> >
> >
> >--
> >*Victoria Concordia Crescit*
> >
> >       [[alternative HTML version deleted]]
> >
> >______________________________________________
> >R-help@r-project.org mailing list
> >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.
>
>


-- 
*Victoria Concordia Crescit*

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
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.

Reply via email to