[R] performing function on lists where each element is a data frame

ewaters ewaters at nchecr.unsw.edu.au
Thu Oct 15 05:55:04 CEST 2009


I have browsed the archive, and played around with a whole bunch of ways of
approaching the problem, and I cannot get the answer that I want.

I have a list with 2000 elements. Each element is a data frame with 2
columns. As an example, see element 1999 below.

[[1999]]
   H   N
6    0.54  26
10   0.31  13
11   0.12  34
13   0.00  38
4    0.59  37
16   0.44   9
19   0.08  13
14   0.64  39
8    0.75  12
24   0.42  26
9    0.61 111
20   0.22   9

Now, I want to caluculate the weighted mean for H in each list element, with
N providing the weights. I can do this fine for an individual list element:

> weighted.mean(list[[1999]]$H,list[[1999]]$N)
[1] 0.4456403

or even:
> weighted.mean(list[[i]]$H,list[[i]]$N)
[1] 0.5992683

but when I try and apply it in a lopp to give me back the weighted mean for
each list element, I get errors:

> list_blah<-matrix(1:2000)
> for(i in 1:2000){
+ list_blah[i]=weighted.mean(list[[i]]$H,list[[i]]$N)}
Error in list[[i]] : subscript out of bounds

I am clearly not understanding a basic syntax issue, and I am not overly
skilled at using loops. I have also tried using lapply instead of a for
loop, with the same problem.

Asking for list[i] instead of list[[i]] gives NA results, as would be
expected.

Can anyone shed light?


weighted.mean

-- 
View this message in context: http://www.nabble.com/performing-function-on-lists-where-each-element-is-a-data-frame-tp25902745p25902745.html
Sent from the R help mailing list archive at Nabble.com.




More information about the R-help mailing list