Hi Duncan,
If vectors of unequal length is the problem, one way to go, using your
example, would be:
# your example
x <- list(c(9, 5, 7, 2, 14, 4, 4, 3), c(3, 6, 25, 2, 14, 3, 3, 4),
c(28, 4, 14, 3, 14, 2, 4, 5), 28)
x
# maximum number of components
k <- max(sapply(x, length))
k
# expanding each list of x to have k elements
lapply(x, function(l) l[1:k])
# average as requested by Greg
colMeans(do.call(rbind, lapply(x, function(l) l[1:k])), na.rm = TRUE)
HTH,
Jorge
On Fri, Oct 29, 2010 at 7:37 PM, Duncan Mackay <> wrote:
> Hi Jorge
>
> I tried your methods for all (which work for complete rows) and then I
> remove the first value of $y and repeated; both fail because of the unequal
> numbers
> The problem is when there are unequal numbers in the rows and trying to
> make a matrix of them.
>
> I was trying some things with Greg's vaules.
> x <- list()
> x[[1]] <- c(9,5,7,2, 14, 4, 4, 3)
> x[[2]] <- c(3, 6, 25, 2, 14, 3, 3 , 4)
> x[[3]] <- c(28, 4 ,14, 3, 14, 2 ,4 , 5)
> x[4] <- list(28 , 4 ,14 , 3, 14, 2 , 4 )
>
> x.av <- list()
> for(j in seq_along(1:max(sapply(x,length))) ) x.av[j] <-
> mean(sapply(x,"[",j),na.rm=T)
> unlist(x.av) # if you want a vector
>
> which Greg may have used first
>
> Regards
>
> Duncan
>
> Duncan Mackay
> Department of Agronomy and Soil Science
> University of New England
> ARMIDALE NSW 2351
> Email home: [email protected]
>
>
> At 08:53 30/10/2010, you wrote:
>
>> Hi Greg,
>>
>> Here are two ways of doing it:
>>
>> > mylist <- list(x = rpois(10, 10), y = rpois(10, 20), z = rpois(10, 5))
>> > mylist
>> $x
>> [1] 3 13 14 16 10 7 3 5 12 14
>>
>> $y
>> [1] 17 16 26 13 23 24 16 28 23 12
>>
>> $z
>> [1] 2 6 5 5 5 1 9 11 6 4
>>
>> >
>> > colMeans(do.call(rbind, mylist), na.rm = TRUE)
>> [1] 7.333333 11.666667 15.000000 11.333333 12.666667 10.666667 9.333333
>> 14.666667 13.666667
>> [10] 10.000000
>> >
>> > Reduce("+", mylist)/length(mylist)
>> [1] 7.333333 11.666667 15.000000 11.333333 12.666667 10.666667 9.333333
>> 14.666667 13.666667
>> [10] 10.000000
>>
>>
>> HTH,
>> Jorge
>>
>>
>> On Fri, Oct 29, 2010 at 6:46 PM, Gregory Ryslik <> wrote:
>>
>> > Hi Everyone,
>> >
>> > I have a list of vectors like this (in this case it's 3 vectors but
>> assume
>> > the vector count and the length of each vector is not known):
>> >
>> > [[1]]
>> > [1] 9 5 7 2 14 4 4 3
>> >
>> > [[2]]
>> > [1] 3 6 25 2 14 3 3 4
>> >
>> > [[3]]
>> > [1] 28 4 14 3 14 2 4 5
>> >
>> > What I want to do is take the average vertically. Thus I want to do
>> 9+3+28
>> > /3, 5+6+4 /3, etc... and then have it return a vector. I'm assuming that
>> if
>> > I can sum it, I can count it to so summing this would be just as
>> helpful.
>> >
>> > I understand I can first go through each element of the list, get a
>> vector,
>> > cbind into matrix and sum across but I was hoping to avoid that... I
>> tried
>> > getting it to work with mapply but am having difficulties...
>> >
>> > Thanks!
>> >
>> > Kind regards,
>> > Greg
>> > ______________________________________________
>> > [email protected] 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.
>> >
>>
>> [[alternative HTML version deleted]]
>>
>>
>> ______________________________________________
>> [email protected] 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.
>>
>
> ______________________________________________
> [email protected] 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.
>
[[alternative HTML version deleted]]
______________________________________________
[email protected] 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.