Transforming a string to a variable's name? help me newbie...
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