[R] Transforming a string to a variable's name? help me newbie...

Antonio, Fabio Di Narzo antonio.fabio at gmail.com
Wed Dec 10 00:45:56 CET 2008


> names(my.data)
gives you the vector of 'names' of the list, which should be a good,
compact overview of the list contents.
> str(my.data)
gives also streamlined information about each component of the list,
i.e. also what variables are there (names and types), how many
observations, etc.
To dissect each single data.frame, just estract it and use it as a
regular data.frame, i.e.
> 019data <- my.data[["019v1msa1.data"]]
> summary(019data)
> 019data$var1
> plot(var1 ~ var2, data = 019data)
> lm(var1 ~ ., data = 019data)
etc. etc.

HTH,
antonio.

2008/12/9 tsunhin wong <thjwong at gmail.com>:
> I did really want to find make the suggestion work... it is going to
> save my time...
> I worked on trying to put all dataframes into a list() by:
> ###start of file
> rm(list=ls())
> setwd("/Users/John/Programs/R")
> load("Expt108Master2008.Rdata")
>
> nms <- ls(pattern=".data")
> my.data <- list()
> for(i in nms) my.data[[i]] <- get(i)

I don't get this bit. This really should be:
> for(i in nms) my.data[[i]] <- read.table(i)
as Greg explained.

>
> save(list=ls(pattern="my."), file="Expt108One.Rdata")
if you have done the above correctly, all your data is in the 'my.data' list:
save(my.data, file="allData.Rdata")

> ###end of file
>
> The original Rdata file (with global dataframes) is 427.4Mb, and the
> new Rdata file with 1 list() storing all dataframes is 427.2Mb
> I can now access the individual dataframes by:
> my.data$019v1msa1.data
>
> But...
> At the moment, whenever I type
>>my.data
> then the whole huge list of dataframes just flush out of standard
> output... and doing a
>>dim(my.data)
> will give me only NULL...
> what command(s) allows me to look at what variables / dataframes are
> stored in a list() structure? And how many of them is there?
>
> Thanks a lot! I'm still seasoning my style of working in R!
>
> Regards,
>
>      John
>
> On Mon, Dec 8, 2008 at 4:10 PM, Greg Snow <Greg.Snow at imail.org> wrote:
>> I really don't understand your concern.  Something like:
>>
>>> nms <- c('file1','file2','file3')
>>> my.data <- list()
>>> for (i in nms) my.data[[ i ]] <- read.table(i)
>>
>> Will read in the files listed in the nms vector and put them into the list my.data (each data frame is a single element of the list).  This list will not take up about the same amount of memory as if you read each file into a dataframe in the global environment.  And there is no transforming of data frames (into 1 row or otherwise).
>>
>> --
>> Gregory (Greg) L. Snow Ph.D.
>> Statistical Data Center
>> Intermountain Healthcare
>> greg.snow at imail.org
>> 801.408.8111
>>
>>
>>> -----Original Message-----
>>> From: tsunhin wong [mailto:thjwong at gmail.com]
>>> Sent: Monday, December 08, 2008 1:34 PM
>>> To: Greg Snow
>>> Cc: Jim Holtman; r-help at r-project.org; jorgeivanvelez at gmail.com
>>> Subject: Re: [R] Transforming a string to a variable's name? help me
>>> newbie...
>>>
>>> I want to combine all dataframes into one large list too...
>>> But each dataframe is a 35 columns x varying number of rows structure
>>> (from 2000 to >9000 rows)
>>> I have ~1500 dataframes of these to process, and that add up to >
>>> 1.5Gb of data...
>>>
>>> Combining dataframes into a single one require me to transform each
>>> single dataframe into one line, but I really don't have a good
>>> solution for the varying number of rows scenario... And also, I don't
>>> want to stall my laptop every time I run the data set: maybe I can do
>>> that when my prof give me a ~ 4Gb ram desktop to run the script ;)
>>>
>>> Thanks! :)
>>>
>>> - John
>>>
>>> On Mon, Dec 8, 2008 at 1:36 PM, Greg Snow <Greg.Snow at imail.org> wrote:
>>> > In the long run it will probably make your life much easier to read
>>> all the dataframes into one large list (and have the names of the
>>> elements be what your currently name the dataframes), then you can just
>>> use regular list indexing (using [[]] rather than $ in most cases)
>>> instead of having to worry about get and assign and the
>>> risks/subtleties involved in using those.
>>> >
>>> > Hope this helps,
>>> >
>>> > --
>>> > Gregory (Greg) L. Snow Ph.D.
>>> > Statistical Data Center
>>> > Intermountain Healthcare
>>> > greg.snow at imail.org
>>> > 801.408.8111
>>> >
>>> >
>>> >> -----Original Message-----
>>> >> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
>>> >> project.org] On Behalf Of tsunhin wong
>>> >> Sent: Monday, December 08, 2008 8:45 AM
>>> >> To: Jim Holtman
>>> >> Cc: r-help at r-project.org
>>> >> Subject: Re: [R] Transforming a string to a variable's name? help me
>>> >> newbie...
>>> >>
>>> >> Thanks Jim and All!
>>> >>
>>> >> It works:
>>> >> tmptrial <- trialcompute(trialextract(
>>> >> get(paste("t",tmptrialinfo[1,2],tmptrialinfo[1,16],".gz",sep="")) ,
>>> >> tmptrialinfo[1,32],secs,sdm),secs,binsize)
>>> >>
>>> >> Can I use "assign" instead? How should it be coded then?
>>> >>
>>> >> Thanks!
>>> >>
>>> >> - John
>>> >>
>>> >> On Mon, Dec 8, 2008 at 10:40 AM, Jim Holtman <jholtman at gmail.com>
>>> >> wrote:
>>> >> > ?get
>>> >> >
>>> >> >
>>> >> > Sent from my iPhone
>>> >> >
>>> >> > On Dec 8, 2008, at 7:11, "tsunhin wong" <thjwong at gmail.com> wrote:
>>> >> >
>>> >> >> Dear all,
>>> >> >>
>>> >> >> I'm a newbie in R.
>>> >> >> I have a 45x2x2x8 design.
>>> >> >> A dataframe stores the metadata of trials. And each trial has its
>>> >> own
>>> >> >> data file: I used "read.table" to import every trial into R as a
>>> >> >> dataframe (variable).
>>> >> >>
>>> >> >> Now I dynamically ask R to retrieve trials that fit certain
>>> >> selection
>>> >> >> criteria, so I use "subset", e.g.
>>> >> >> tmptrialinfo <- subset(trialinfo, (Subject==24 &
>>> >> Filename=="v2msa8"))
>>> >> >>
>>> >> >> The name of the dataframe / variable of an individual trial can
>>> be
>>> >> >> obtained using:
>>> >> >> paste("t",tmptrialinfo[1,2],tmptrialinfo[1,16],".gz",sep="")
>>> >> >> Then I get a string:
>>> >> >> "t24v2msa8.gz"
>>> >> >> which is of the exact same name of the dataframe / variable of
>>> that
>>> >> >> trial, which is:
>>> >> >> t24v2msa8.gz
>>> >> >>
>>> >> >> Can somebody tell me how can I change that string (obtained from
>>> >> >> "paste()" above) to be a usable / manipulable variable name, so
>>> that
>>> >> I
>>> >> >> can do something, such as:
>>> >> >> (1)
>>> >> >> tmptrial <- trialcompute(trialextract(
>>> >> >> paste("t",tmptrialinfo[1,2],tmptrialinfo[1,16],".gz",sep="")
>>> >> >> ,tmptrialinfo[1,32],secs,sdm),secs,binsize)
>>> >> >> instead of hardcoding:
>>> >> >> (2)
>>> >> >> tmptrial <-
>>> >> >>
>>> >>
>>> trialcompute(trialextract(t24v2msa8.gz,tmptrialinfo[1,32],secs,sdm),sec
>>> >> s,binsize)
>>> >> >>
>>> >> >> Currently, 1) doesn't work...
>>> >> >>
>>> >> >> Thanks in advance for your help!
>>> >> >>
>>> >> >> Regards,
>>> >> >>
>>> >> >>     John
>>> >> >>
>>> >> >> ______________________________________________
>>> >> >> R-help at 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.
>>> >> >
>>> >>
>>> >> ______________________________________________
>>> >> R-help at 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.
>>> >
>>
>
> ______________________________________________
> R-help at 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.
>



-- 
Antonio, Fabio Di Narzo
Ph.D. student at
Department of Statistical Sciences
University of Bologna, Italy



More information about the R-help mailing list