# [R] using [i] to plot & label all vector elements

Robert Schick Robert.Schick at noaa.gov
Wed Jul 2 17:27:41 CEST 2003

```I'm using 1.6.2 on a win 2k box. (I know I'm due for an upgrade.)

I've used brute force to label a series of vectors, and I'm wondering if
there's a better way to do this. I wanted to create a biplot of the 2nd
& 3rd PCs, and did this:

test.1 <- test[,1]
test.2 <- test[,2]
test.3 <- test[,3]
x0 <- 0
y0 <- 0
i <- order(test.1)
x <- test.1[i]
y <- test.2[i]
z <- test.3[i]

# and added the arrows to the pc plot with the following brute force
labeling.

arrows(x0, y0, x[i],y[i], length=0.1, lty=3)
text(x[i],y[i],labels=c("srnv", "ann.precip", "area.gt500", "modc" ,
"cscd","nwca", "range.ann.T", "mean.ann.T", "min.ann.T", "sedi", "gran",
"aluv", "cwca1", "elev", "volc", "gcv", "max.ann.T", "peak.flow.mnth"),
cex=.75)

When I tried using labels=rownames(x[i]) I get NULL. Three questions:
1. Why is that statement NULL?
2. Is there a way to plot the labels without having to hard code them as
above.
3. Even if I hard code them, there's something that seems to change in
the order of that that is eluding me. I suspect it's a combination of
[i] and order, but I don't understand it. Advice?

FWIW, test.1 looks like:
> test.1
max.ann.T     mean.ann.T      min.ann.T           aluv
cscd
-2.2162273     -2.1489203     -1.9744394     -1.2975221
-1.1924917
<snip>

--
Rob Schick
Ecologist
NOAA Fisheries
Santa Cruz Lab