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

Greg Snow Greg.Snow at imail.org
Thu Dec 11 16:59:02 CET 2008


You can try the TkListView function from the TeachingDemos package.  I have tested it with lists with about 50 elements, but not thousands, so no guarantees.  It opens a new window with the elements of the list in the left pane (can be scrolled up and down), each element then has a '+' next to it that if you click on it will show the next level down of just that element.  There are buttons to further explore (print/str/custom) the currently selected element.

You can also just do str or whatever on single elements:

> str(mylist[[5]])

Will give the details on the 5th element of mylist.

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: tsunhin wong [mailto:thjwong at gmail.com]
> Sent: Tuesday, December 09, 2008 4:22 PM
> To: Greg Snow
> Cc: r-help at r-project.org
> Subject: Re: [R] Transforming a string to a variable's name? help me
> newbie...
>
> 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)
>
> save(list=ls(pattern="my."), file="Expt108One.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.
> >> >
> >



More information about the R-help mailing list