[R] matrix subscripts in replacement (in a data frame)

ripley@stats.ox.ac.uk ripley at stats.ox.ac.uk
Sat Feb 1 18:57:05 CET 2003


Simple: it's not been implemented in R.  Would you like to contribute an 
implementation?

Remember, R is a volunteer project and what gets implemented depends on 
the volunteer's needs.

On Sat, 1 Feb 2003, Bliese, Paul D MAJ WRAIR-Wash DC wrote:

> I'm reluctant to draw the S-PLUS and R comparison (these are different
> programs after all), but could someone tell me why the following matrix
> substitution works in S-PLUS, but not R.  I'm curious because matrix
> substitution is a really slick way to "cleaning up" columns of data in data
> frames.  For example, in the following I change values of 1 to values of 10,
> but only for columns 1 and 3.
> 
> # S-PLUS example below
> 
> > TEMP<-data.frame(VAR1=c(1,2,3,4,5),VAR2=c(5,4,3,2,1),VAR3=c(1,1,1,1,NA))
> > TEMP
>   VAR1 VAR2 VAR3 
> 1    1    5    1
> 2    2    4    1
> 3    3    3    1
> 4    4    2    1
> 5    5    1   NA
> > TEMP[,c(1,3)][TEMP[,c(1,3)]==1&!is.na(TEMP[,c(1,3)])]<-10
> > TEMP
>   VAR1 VAR2 VAR3 
> 1   10    5   10
> 2    2    4   10
> 3    3    3   10
> 4    4    2   10
> 5    5    1   NA
> 
> # R Example Below (version 1.6.1 Windows)
> 
> > TEMP<-data.frame(VAR1=c(1,2,3,4,5),VAR2=c(5,4,3,2,1),VAR3=c(1,1,1,1,NA))
> > TEMP
>   VAR1 VAR2 VAR3
> 1    1    5    1
> 2    2    4    1
> 3    3    3    1
> 4    4    2    1
> 5    5    1   NA
> > TEMP[,c(1,3)][TEMP[,c(1,3)]==1&!is.na(TEMP[,c(1,3)])]<-10
> Error in "[<-.data.frame"(*tmp*, TEMP[, c(1, 3)] == 1 & !is.na(TEMP[,  : 
>         matrix subscripts not allowed in replacement

-- 
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