[R] assign a constant to a different column for each row

Prof Brian Ripley ripley at stats.ox.ac.uk
Mon Oct 27 18:15:26 CET 2003


m[1:5 + nrow(m)*c(2,3,1,2,1)] <- 0 if m is a matrix.  Remember you can 
index a matrix as a vector.

If m is a data frame (you didn't say what it is)  I would loop over 
columns (not rows) explicitly, since the code is going to do that 
implicitly.

On Mon, 27 Oct 2003 uaca at alumni.uv.es wrote:

> 
> Hi all
> 
> I want to assign a constant to a different column for each row
> 
> eg:
> 
> m[1,2] <- 0;
> m[2,3] <- 0;
> m[3,1] <- 0;
> m[4,2] <- 0;
> m[5,1] <- 0;
> ...
> 
> etc...
>           
> i've tried apply/tapply with no luck
> 
> and also the following
> 
> coefs <- rtt.abs[,5:8];
> coefs.i <- coefs[] == 1;
> coefs[coefs.i] <- 0;
> 
> wich results in
> 
> "matrix subscripts not allowed in replacement" 
> 
> error message, for wich I have not found any workaround
> 
> a trivial for() loop is not fast enough
> 
> any help would be greatly appreciated, (maybe a gun too) I'm disperated :-\

-- 
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 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list