[R] Help with functions within a list

David Winsemius dwinsemius at comcast.net
Fri Mar 20 18:27:10 CET 2009


I say again:

Build a simple example;

--  
David Winsemius
On Mar 20, 2009, at 1:00 PM, Altaweel, Mark R. wrote:

> I will try to be clearer with what I wanted.
>
> What I am trying to do is take a list, say defined as res, that has  
> a size of 1000
>
> For example:
>
> res[[1]]                       
> res[[2]]                      .....until res[[1000]]
> ----------------------------------------------
> Id    X     Tick        Id      X     Tick             ........
> 1     2.2   1            1       1.4   1
> 2     3.1   1            2       3.2   1
> 1     1.2   2            1       1.1   2
> 2     2.2   2            2       3.0   2
>
> Now, say I want to get the mean of Id=1 or Id=2 for all instances  
> where Tick=1 or Tick=2. So in the example, the result for X when  
> Id=1 and Tick=1 is: 1.8 (i.e., the average between 2.2 and 1.4 in  
> res[[1]] and res[[2]]). However, in reality I would calculate the  
> mean for all 1000 instances of Tick=1 and Id=1. I would also do this  
> for all Id and Tick values.
>
> So basically this is what I would like to do for all the 1000  
> elements in my list. Take the Id and Tick values for each of the  
> elements and find the mean of the x value for all 1000 instances  
> that occur for the given Id and Tick values.
>
> It would be nice to get the result in a form such as:
>
> result<- (some function that does what I want for all Ids and Tick  
> values in the 1000 element list)
>
> result
> --------------------
> Id    meanX    Tick
> 1      1.8          1
> 2      3.15        1
> 1      1.15        2
> 2      2.6          2
>
>
> This is what I tried in order to get the mean for all tick values  
> less than 601 and Ids greater than 0:
>
> weightX<-sapply(res, function(.df) {mean(.df$X[.df$Id>0 & .df 
> $Tick<601])})
>
> This does not work as it seems to not provide the mean across all  
> the elements and ids included in the conditional. I think the result  
> is it just overwrites the previous answer so my final results is not  
> as large as I would expect.
>
> Thanks again in advance.
>
>
> Mark
>
> -----Original Message-----
> From: baptiste auguie [mailto:ba208 at exeter.ac.uk]
> Sent: Fri 3/20/2009 4:32 AM
> To: Altaweel, Mark R.
> Cc: r-help at r-project.org
> Subject: Re: [R] functions within a list
>
> Hi,
>
>
> you could have a look at the doBy package which makes these operations
> easier. Hadley's plyr package is also another option.
>
> baptiste
>
> On 20 Mar 2009, at 01:01, Altaweel, Mark R. wrote:
>
>> Hi,
>>
>> I am trying to perform various functions on a list with a number of
>> elements. For example. I would like to take the mean of different
>> variable values in the entire list. As an example,
>> say I have a list with 1000 elements and variables called Id and
>> Tick. What I would like to do is take the mean of a variable called
>> X for each Tick in the data element. So, there can be say 1 to 600
>> tick values per element in a list, that would mean I would like to
>> find the 600 mean values for each of the ticks values in the 1000
>> elements.
>>
>>
>> I tried a simple attempt below, but I am sure it is way off as it
>> didn't produce what I expected:
>>
>> //res=res[[1..1000]]
>> weightX<-sapply(res, function(.df) {mean(.df$X[.df$Id>0 & .df
>> $Tick<601])})
>>
>> Basically, I was trying to get the mean for all tick values less
>> than 600 that have an Id variable greater than 0. So, since there
>> are 600 ticks I would like to return a result with 600 mean values,
>> for each of the 600 ticks, that factors all the 1000 occurrences of
>> each tick, starting from 1.
>>
>> I hope this is clear. Thanks in advance.
>>
>> Mark
>>
>> ______________________________________________
>> 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.
>
> _____________________________
>
> Baptiste Auguié
>
> School of Physics
> University of Exeter
> Stocker Road,
> Exeter, Devon,
> EX4 4QL, UK
>
> Phone: +44 1392 264187
>
> http://newton.ex.ac.uk/research/emag
>
> ______________________________________________
> 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.

David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list