[R] subset and na.rm not really suppressing <NA> values

Jeff Newmiller jdnewmil at dcn.davis.CA.us
Thu Jan 23 03:59:12 CET 2014

I don't think na.rm is a valid at parameter for the subset function. I would normally use the is.na function to logically test for NA values. I also don't know where your VALID_EMAIL variable is coming from.

a <- subset(mydf, !is.na(EMAIL_ADDRESS))

The na.strings argument to read.csv and friends is used to help recognise strings in the input that should be treated as NA. If you don't see "<NA>" in your input file then it will have no effect on the data import.

Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
Sent from my phone. Please excuse my brevity.

Jeff Johnson <mrjefftoyou at gmail.com> wrote:
>I have a dataset "mydf" with a field EMAIL_ADDRESS. When importing, I
>mydf <- read.csv(file = extract, header = TRUE, stringsAsFactors =
>I've also tried setting na.strings= c("NA","","<NA>") but I don't know
>it's appropriate to put <NA> there.
>I'm running
>a <- subset(mydf, VALID_EMAIL == FALSE, na.rm = TRUE, select =
>structure(list(EMAIL_ADDRESS = c(NA_character_, NA_character_,
>NA_character_, NA_character_, NA_character_)), .Names =
>row.names = c(17L,
>22L, 23L, 24L, 30L), class = "data.frame")
>The results show a lot of <NA> values on screen and in the dput
>I don't quite understand why it is doing that. I would have expected it
>exclude those since I had the na.rm = TRUE statement. Do you have any

More information about the R-help mailing list