[R] Weird problem with trying to change a variable

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Jan 16 23:01:31 CET 2004


On Fri, 16 Jan 2004, Peter Flom wrote:

> I have a dataframe called cvar, with two variables (among many others)
> called MSA and ACTUP.  Both are numeric.  This was working fine.  Then I
> found out that for two MSAs, ACTUP should be 1, not 0.
> 
> so I tried
> 
> cvar$ACTUP[cvar$MSA == 6840] <- 1
> cvar$ACTUP[cvar$MSA == 5360] <- 1
> 
> but when I try 
> 
> table(cvar$MSA, cvar$ACTUP)
> 
> the level of ACTUP for those two MSAs has not changed, and is still 0 

`The level'?  You said they were numeric, and it is factors which have 
levels.

> When I try
> 
> cvar$MSA  or cvar$ACTUP
> 
> I get lists, as I expect.  the MSA list includes 6840 and 5360

Lists?  Do you mean vectors?  Columns of dataframes are not supposed to be 
lists.

> when I try
> 
> cvar$ACTUP[cvar$MSA == 5360]
> 
> I get numeric(0)

So presumably cvar$MSA == 5360 is entirely false, but I would check, and I 
would also check the class of cvar$MSA.

If perchance MSA were a factor, something like the following could be 
happening:

> MSA <- factor(c("10000", " 5360"))
> MSA
[1] 10000  5360
Levels:  5360 10000
> MSA == 5360
[1] FALSE FALSE


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