[R] problem adding columns to matrix

Fabio Murtas fabio.murtas at gmail.com
Sun Aug 9 22:51:17 CEST 2009


Hi all, i purchased a copy of the book Morphometrics with R by Springer.
at the end of each chapter there are exercises to train what you just  
read and (hope) learned...

so i have this problem:

Define a hypothetical data frame containing five measurments normally  
distributed(size,head,pectoral,area,weight) for four individuals  
(named ind1, ind2, etc). ADD A COLUMN corresponding to the factor sex  
with individual 1 & 2 being Males and 3 & $ being Females.



HERE IS HOW I PROCEDED, getting 2 problems
1) what are those warning messages i got when i generate the m matrix  
(the italian text stand for "the numerical expression has 5 elements:  
just the first is used")
2) why when i use cbind to add the s factor wit M,M,F,F,   (sexes) to  
the m matrix i get numerical values 1 & 2 instead of character values  
M & F?

------------------------------------------------------------------------------------------------------
procedure follows:

 > a<- rnorm(5, 20, 7)
 > a
[1] 27.32586 34.07330 21.11710 25.85710 22.68296
 > a
[1] 27.32586 34.07330 21.11710 25.85710 22.68296
 > b<- rnorm(5, 20, 7)
 >
 > d<- rnorm(5, 20, 7)
 >
 >
 > e<- rnorm(5, 20, 7)

 > m<-matrix(a:e, 4,5)
Warning messages:
1: In a:e :
  l'espressione numerica ha 5 elementi: solo il primo è utilizzato
2: In a:e :
  l'espressione numerica ha 5 elementi: solo il primo è utilizzato
3: In matrix(a:e, 4, 5) :
  data length [3] is not a sub-multiple or multiple of the number of  
rows [4]
 >
 > m
         [,1]     [,2]     [,3]     [,4]     [,5]
[1,] 27.32586 28.32586 29.32586 27.32586 28.32586
[2,] 28.32586 29.32586 27.32586 28.32586 29.32586
[3,] 29.32586 27.32586 28.32586 29.32586 27.32586
[4,] 27.32586 28.32586 29.32586 27.32586 28.32586

 > m<-as.data.frame(m)
 > m
        V1       V2       V3       V4       V5
1 27.32586 28.32586 29.32586 27.32586 28.32586
2 28.32586 29.32586 27.32586 28.32586 29.32586
3 29.32586 27.32586 28.32586 29.32586 27.32586
4 27.32586 28.32586 29.32586 27.32586 28.32586
 > mode(m)
[1] "list"
 > colnames(m)<-c("size","head","pectoral","area","weight")
 > mode(m)
[1] "list"
 >
 > m
      size     head pectoral     area   weight
1 27.32586 28.32586 29.32586 27.32586 28.32586
2 28.32586 29.32586 27.32586 28.32586 29.32586
3 29.32586 27.32586 28.32586 29.32586 27.32586
4 27.32586 28.32586 29.32586 27.32586 28.32586

 >rownames(m)<-paste("ind", 1:4, sep="")
 >
 >
 > m
         size     head pectoral     area   weight
ind1 27.32586 28.32586 29.32586 27.32586 28.32586
ind2 28.32586 29.32586 27.32586 28.32586 29.32586
ind3 29.32586 27.32586 28.32586 29.32586 27.32586
ind4 27.32586 28.32586 29.32586 27.32586 28.32586

 > s<-factor(c("m","m","f","f"))
 >
 >
 > s
[1] m m f f
Levels: f m
 > cbind(m,s)
         size     head pectoral     area   weight s
ind1 27.32586 28.32586 29.32586 27.32586 28.32586 2
ind2 28.32586 29.32586 27.32586 28.32586 29.32586 2
ind3 29.32586 27.32586 28.32586 29.32586 27.32586 1
ind4 27.32586 28.32586 29.32586 27.32586 28.32586 1
 >
------------------------------------------------------------------------------------------------------

Thanks in advance


Fabio Murtas
fabio.murtas at gmail.com

Nothing in biology make sense if not in Evolution light




More information about the R-help mailing list