Skip to content

Explanation w.r.t. rbind, please!

4 messages · Gavin Simpson, Meyners, Michael, LAUSANNE, AppliedMathematics, Uwe Dippel

#
This is what I tried:

 > num.vec <- c(12.34,56.78,90.12,34.56)
 > names(num.vec)<-c("first","second","third","fourth")
 > num.vec
 first second  third fourth
 12.34  56.78  90.12  34.56
 > seq<-(1:4)                          
 > num.mat<-rbind(num.vec,seq)
 > num.mat                   
        first second third fourth
num.vec 12.34  56.78 90.12  34.56
seq      1.00   2.00  3.00   4.00
 > num.vec [3:4]
 third fourth 
 90.12  34.56

(until here I'm fine)

 > num.mat [seq]
[1] 12.34  1.00 56.78  2.00
 > num.mat [num.vec]
[1] NA NA NA NA   
 > num.vec [seq]
 first second  third fourth
 12.34  56.78  90.12  34.56
 > num.mat [num.vec]        
[1] NA NA NA NA            
 > num.mat [-seq]          
[1] 90.12  3.00 34.56  4.00

(and here I'm lost!)

How could I display a row, instead of always seemingly falling back to 
columns?

Uwe
#
On Fri, 2010-01-29 at 18:56 +0800, Uwe Dippel wrote:
You're indexing the matrix as if it were a vector. Which is fine, except
that in R matrices are indexed by columns, hence the last result your
got - you dropped the first 4 entries which are the first two columns,
hence you got the last two columns of data.

Knowing this you could alter your seq to be seq(1, 8, by = 2):
[1] 12.34 56.78 90.12 34.56

Thank full there is an easier way:

?`[`

has the details, look at arguments i and j.
first second  third fourth 
 12.34  56.78  90.12  34.56

or, without the (col)names
[1] 12.34 56.78 90.12 34.56


HTH

G
What you (probably) want here is
num.mat ["seq",]
num.mat["num.vec",]

and so on. You have to use tell R that you want the ROW (that's why the
comma is needed) defined by the NAME "seq" or "num.vec" (that's why you
need "") . Otherwise, R replaces seq by its value 1:4, so 
num.mat[seq] 
is identical to 
num.mat[1:4] 
(and num.mat[12.34] is NA of course in num.mat[num.vec])

You should have a closer look at ?Extract
HTH, Michael
#
Meyners,Michael,LAUSANNE,AppliedMathematics wrote:
Thanks, I had been exactly there before, and it didn't work neither. Now 
it works. I do understand the need for the rows *now*.

Uwe