Hello y'll, thanks a lot for your hints. The easiest solution was the one from Jim, using "[[" whose true function I did not realize fully. About apply and the sorts: I agree that if you get them to work the are much faster and yield nice, compact code. But I have never fully understood the inner workings and I think the provided examples (even in most books) rush over them. If I use them successfully, it is - at least in my case - more the result of trial and error and this does not make them a weapon of first choice. If someone has a good hint where they are explained accessibly, please share it. Thanks again and have a great week! Best, Stefan
On Fri, Jan 30, 2009 at 7:54 PM, David Winsemius <dwinsemius at comcast.net> wrote:
Perhaps this will help:
#Data Example
gnuff<-list()
gnuff$IHD$LE<-66
gnuff$LUNG$LE <-55
#This is the list, where I collect data for different diseases at the
#second level of the list
#Now I want to do calcualtions just for these two diseases and the
#sub-list "LE" within these diseases
nam <- c("LUNG","IHD")
for(i in nam) print(gnuff[[i]]) # use the elements of nam as the index
values
# the lack of output from an evaluation done within the for-loop might be
one of Burns' Infernal examples.
# here's see one of my "mistakes": for(i in nam) (gnuff[[i]])
#---returns a list---
#$LE
#[1] 55
#$LE
#[1] 66
#---
for(i in nam) print(gnuff[[i]]$LE) #use list extraction to get the values
#[1] 55
#[1] 66
On Jan 30, 2009, at 12:06 PM, stefan.duke at gmail.com wrote:
Hello,
I have a maybe trivial question, but I simply don't understand well
enought how to work with text/strings:
I have a rather compelx data structure, a big list with several
sub-lists/dataframes and for certain calculations (which I do in
loops), I only need a certain group of sub-lists/dataframes, which I
want to specify with a name vector and paste together the object name
and pass it on to a function.
Here an (hopefully) instructive example
#Data Example
gnuff<-list()
gnuff$IHD$LE<-66
gnuff$LUNG$LE <-55
#This is the list, where I collect data for different diseases at the
second level of the list
#Now I want to do calcualtions just for these two diseases and the
sub-list "LE" within these diseases
nam <- c("LUNG","IHD")
for(i in 1:2)
x[i] <- paste("gnuff",nam[i],"LE",sep="$") /2
x
#So I try to paste the name of the object which I mean
(gnuff$IHD$LEand gnuff$LUNG$LE, respectivly), but R treats them as a
string and not as the name of an object.
# I tried seveal commands to make it treat like an object name (the
get() looked most promising), but so far to no avail
#commands I have tried
j <- eval(paste("gnuff",nam[i],"LE",sep="$"))
parse(paste("gnuff",nam[i],sep="$"))
quote(paste("gnuff",nam[i],sep="$"))
get(paste("gnuff",nam[i],sep="$"))
Anybody any hints where to look?
Thanks and have a great weekend!
Best,
Stefan
______________________________________________ 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.