[R] subscripting in data frames with NA
Agustin Lobo
aloboaleu at gmail.com
Tue Jun 24 12:07:12 CEST 2008
Dear list:
Given
> str(b3)
'data.frame': 159 obs. of 6 variables:
$ index_pollution : num 8.228 10.513 0.549 0.915 10.416 ...
$ position_descrip: chr "2" "2" "2" NA ...
$ position_geo : chr "3" "0" "3" "3" ...
$ institution : Factor w/ 3 levels "digesa","mem",..: 3 3 3 3 3 3
3 3 3 3 ...
$ p_desc_no3 : chr "2" "2" "2" NA ...
$ p_geo_no3 : chr "3" "0" "3" "3" ...
I try to subscript but get:
> b3[b3[,3]=="3",5] <-NA
Error in `[<-.data.frame`(`*tmp*`, b3[, 3] == "3", 5, value = NA) :
missing values are not allowed in subscripted assignments of data frames
Why? What's the correct way of doing this operation?
Actually, I previously tried with:
> str(b2)
'data.frame': 159 obs. of 6 variables:
$ index_pollution : num 8.228 10.513 0.549 0.915 10.416 ...
$ position_descrip: Factor w/ 3 levels "0","1","2": 3 3 3 NA NA NA 3 3
3 3 ...
$ position_geo : Factor w/ 4 levels "0","1","2","3": 4 1 4 4 3 NA 3
3 3 4 ...
$ institution : Factor w/ 3 levels "digesa","mem",..: 3 3 3 3 3 3
3 3 3 3 ...
$ p_desc_no3 : Factor w/ 3 levels "0","1","2": 3 3 3 NA NA NA 3 3
3 3 ...
$ p_geo_no3 : Factor w/ 4 levels "0","1","2","3": 4 1 4 4 3 NA 3
3 3 4 ...
> table(b2$p_desc_no3)
0 1 2
42 44 66
and
> levels(b2$p_desc_no3)[levels(b2$position_geo)=="3"] <- NA
which does not result into error but leaves b2$p_desc_no3 unchanged:
> table(b2$p_desc_no3)
0 1 2
42 44 66
what am i doing wrong?
Thanks
Agus
--
Dr. Agustin Lobo
Institut de Ciencies de la Terra "Jaume Almera" (CSIC)
LLuis Sole Sabaris s/n
08028 Barcelona
Spain
Tel. 34 934095410
Fax. 34 934110012
email: Agustin.Lobo at ija.csic.es
http://www.ija.csic.es/gt/obster
More information about the R-help
mailing list