[R] Help w/ matrix calc

Ernesto Jardim ernesto at ipimar.pt
Thu Jul 29 15:38:47 CEST 2004


On Thu, 2004-07-29 at 12:38, eesteves at ualg.pt wrote:
> Dear All,
> Help is needed! I have a matrix with frequencies of fish larvae per length 
> class (var. sl) and age-group (var. median.no) obtained with 
> 
> >k<-table(cut(sl,(5:22)),median.no)
> >k[2:5,1:5] #to ilustrate k
> 
>         4  5  6  7 
> (6,7]   3  1  0  0
> (7,8]   3  0  1  0
> (8,9]   3  4  3  5
> (9,10]  3 15  7 13
> 
> from this matrix I would like to obtain the mean age per length class i.e. 
> vector of line means. How can I do this? If, instead of the means I wanted the 
> variances, how could I do it?
> Thanks in advance,
> Eduardo Esteves
> 

Olá Edu,

To compute that kind of statistics it's better to have a vector with
your length values (you can get it from the names of your matrix if you
prefer). I supose you want to use the mean length interval so you can
use the weigthed.mean function

len <- seq(6.5,9.5,1)

lenbar <- apply(k, 2, FUN=function(x){weighted.mean(len,x)}) 

to get variances you can use

lenvar <- apply(k, 2, FUN=function(x){var(rep(len,x))})

I think you may also use cov.wt but I'm not sure.

A more interesting result can be 

lendesc <- apply(k, 2, FUN=function(x){
	vec <- rep(len,x)	
	c(summary(vec), var=var(vec), mad=mad(vec))
})

I'm sure there are better and more elegant ways of doing this but here
you have a "quick fix" for you're problem.

Abraços amigos

EJ




More information about the R-help mailing list