[R] Question on the idiom: start <- coef; start[fit$pivot] <- coef
Prof Brian D Ripley
ripley at stats.ox.ac.uk
Fri Apr 30 10:17:23 CEST 1999
On Fri, 30 Apr 1999, Barnet Wagman wrote:
> I wonder if someone could explain how the following R idiom works (it's
> used in
> glm.fit).
>
> start <- coef
> start[fit$pivot] <- coef
>
> coef is a vector of coefficients, set by .Fortran("dqrls", ...).
> fit$pivot is a vector of integer indexes (indicating how dqrls permuted
> the columns
> of x). If coef has n elements, fit$pivot is a permutation of seq(1,5).
>
> start[fit$pivot] is simple enough, but the assignment performs a futher
> permuation
> that I don't understand. For example
>
> > pivot <- c(1,3,4,2,5)
> > a <- c(100,200,300,400,500)
> > b <- a
> > b[pivot] <- a
> > b
> [1] 100 400 200 300 500
>
>
> I guess there must be a replacement function for [], but I haven't
> been able to dig up any documentation on it (and I'm not quite sure
> where
> to look in the source code). I'd like to understand what R does when a
> vector
> is assigned to another vector in this way.
I wouldn't try looking in the source code for something as fundamental as
this. It is simple:
b[c(1,3,4,2,5)] <- a
replaces the first element specified on the lhs by the first specified on
the rhs, etc. So it means
b[1] <- 100; b[3] <- 200; b[4] <- 300; b[2] <- 400; b[5] <- 500
and this permuting (or reversing a permutation) is the key idea.
Understanding indexing in S is one key to unlocking its power: section 2.8
of Venables & Ripley might be a good place to look for a full description.
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272860 (secr)
Oxford OX1 3TG, UK Fax: +44 1865 272595
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list