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

tsunhin wong thjwong at gmail.com
Wed Dec 10 00:56:59 CET 2008


Thank you all! :)

Can I "walk through" the my.data structure without knowing the name of
particular dataframe in it? Such as:
for(i in 1:length(my.data)) myprocess(my.data[i])
?
If it is possible, then this is going to save the work of using paste().

Thanks!

On Tue, Dec 9, 2008 at 6:45 PM, Antonio, Fabio Di Narzo
<antonio.fabio at gmail.com> wrote:
>> 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