[R] paste together object names to pass it on to a function

stefan.duke at gmail.com stefan.duke at gmail.com
Mon Feb 2 10:43:13 CET 2009


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.
>
>




More information about the R-help mailing list