[R] Proper Syntax for Logical Subset in Subset()
Rich Shepard
rshepard at appl-ecosys.com
Wed Nov 2 17:39:13 CET 2011
I have measured values for 47 chemicals in a stream. After processing
the original data frame through reshape2, the recast data frame has this
structure:
'data.frame': 256 obs. of 47 variables:
$ site : Factor w/ 143 levels "BC-0.5","BC-1",..: 1 1 1 2 2 2 2 2 2 2
...
$ sampdate : Date, format: "1996-04-19" "1996-05-21" ...
$ Acid : num NA NA NA NA NA NA NA NA NA NA ...
$ Ag : num NA NA NA NA NA NA NA NA NA NA ...
$ Al : num 0.07 NA NA NA NA NA NA NA NA NA ...
$ Alk-HO : num NA NA NA NA NA NA NA NA NA NA ...
$ Alk-Tot : num 162 152 212 NA NA NA NA NA NA NA ...
$ As : num 0.01 NA NA 0 0 0 0 0.01 0 0.01 ...
$ Ba : num 0.18 NA NA NA NA NA NA NA NA NA ...
$ Be : num NA NA NA NA NA NA NA NA NA NA ...
$ Bo : num NA NA NA NA NA NA NA NA NA NA ...
$ CO3 : num NA NA NA NA NA NA NA NA NA NA ...
$ Ca : num 76.6 NA NA NA NA ...
$ Cd : num NA NA NA NA NA NA NA NA NA NA ...
$ Cl : num 12 NA NA NA NA NA NA NA NA NA ...
$ Cn : num NA NA NA NA NA NA NA NA NA NA ...
$ Co : num NA NA NA NA NA NA NA NA NA NA ...
$ Cond : num 712 403 731 NA NA NA NA NA NA NA ...
$ Cr : num NA NA NA NA NA NA NA NA NA NA ...
$ DO : num NA NA NA NA NA NA NA NA NA NA ...
$ F : num NA NA NA NA NA NA NA NA NA NA ...
$ Fe : num 0.06 NA NA NA NA NA NA NA NA NA ...
$ Flow : num NA NA NA NA NA NA NA NA NA NA ...
$ HCO3 : num 162 152 212 NA NA NA NA NA NA NA ...
$ Hg : num 0 NA NA NA NA NA NA NA NA NA ...
$ K : num 1.7 NA NA NA NA NA NA NA NA NA ...
$ Mg : num 43.2 NA NA NA NA ...
$ Mn : num NA NA NA NA NA NA NA NA NA NA ...
$ NO2-N : num NA NA NA NA NA NA NA NA NA NA ...
$ NO3-N : num NA 0.47 0.09 NA NA NA NA NA NA NA ...
$ NO3-NO2-N: num 1.97 NA NA NA NA NA NA NA NA NA ...
$ Na : num NA NA NA NA NA NA NA NA NA NA ...
$ Ni : num NA NA NA NA NA NA NA NA NA NA ...
$ OH : num NA NA NA NA NA NA NA NA NA NA ...
$ P : num 0.03 NA NA NA NA NA NA NA NA NA ...
$ Pb : num NA NA NA NA NA NA NA NA NA NA ...
$ SO4 : num 175 57 194 NA NA NA NA NA NA NA ...
$ Sb : num 0 NA NA NA NA NA NA NA NA NA ...
$ Se : num 0.01 NA NA NA NA NA NA NA NA NA ...
$ Si : num NA NA NA NA NA NA NA NA NA NA ...
$ TDS : num 460 212 530 NA NA NA NA NA NA NA ...
$ TSS : num NA 26 NA NA NA NA NA NA NA NA ...
$ Temp : num NA NA NA NA NA NA NA NA NA NA ...
$ Tl : num NA NA NA NA NA NA NA NA NA NA ...
$ Turb : num 2.2 NA NA NA NA NA NA NA NA NA ...
$ Zn : num 0.02 NA NA NA NA NA NA NA NA NA ...
$ pH : num 8.12 8.19 8.46 NA NA NA NA NA NA NA ...
I want a subset of this with only 7 chemicals: Ca, Cl, Cond, Mg, Na, SO4,
and TDS. The subset help page tells me that I can use a logical subset to
extract these 7 rows while keeping all columns, but I do not know how to
write that logical subset. I tried emulating the example on the help page of
avoiding the subset but R didn't like the '%in%' as I wrote it; putting the
desired row names in a subset vector fails:
burns.tds <- subset(burns.cast, subset(c('Ca', 'Cl', 'Cond', 'Mg', 'Na',
'SO4', 'TDS')))
Error in subset.default(c("Ca", "Cl", "Cond", "Mg", "Na", "SO4", "TDS")) :
argument "subset" is missing, with no default
What is the proper syntax to extract only these rows into a new data
frame? And, is the recast data frame the appropriate format as the source?
Rich
More information about the R-help
mailing list