This is an example from https://stat.ethz.ch/pipermail/r-help/2007-May/132573.html .
With R 2.7.2: > a <- c(1, 1, 2, 2, NA, 3); b <- c(2, 1, 1, 1, 1, 1) > table(a, b, exclude = NULL) b a 1 2 1 1 1 2 2 0 3 1 0 <NA> 1 0 With R 3.3.1: > a <- c(1, 1, 2, 2, NA, 3); b <- c(2, 1, 1, 1, 1, 1) > table(a, b, exclude = NULL) b a 1 2 <NA> 1 1 1 0 2 2 0 0 3 1 0 0 <NA> 1 0 0 > table(a, b, useNA = "ifany") b a 1 2 1 1 1 2 2 0 3 1 0 <NA> 1 0 > table(a, b, exclude = NULL, useNA = "ifany") b a 1 2 <NA> 1 1 1 0 2 2 0 0 3 1 0 0 <NA> 1 0 0 For the example, in R 3.3.1, the result of 'table' with exclude = NULL includes NA even if NA is not present. It is different from R 2.7.2, that comes from factor(exclude = NULL), that includes NA only if NA is present. >From R 3.3.1 help on 'table', in "Details" section: 'useNA' controls if the table includes counts of 'NA' values: the allowed values correspond to never, only if the count is positive and even for zero counts. This is overridden by specifying 'exclude = NULL'. Specifying 'exclude = NULL' overrides 'useNA' to what value? The documentation doesn't say. Looking at the code of function 'table', the value is "always". For the example, in R 3.3.1, the result like in R 2.7.2 can be obtained with useNA = "ifany" and 'exclude' unspecified. The result of 'summary' of a logical vector is affected. As mentioned in http://stackoverflow.com/questions/26775501/r-dropping-nas-in-logical-column-levels , in the code of function 'summary.default', for logical, table(object, exclude = NULL) is used. With R 2.7.2: > log <- c(NA, logical(4), NA, !logical(2), NA) > summary(log) Mode FALSE TRUE NA's logical 4 2 3 > summary(log[!is.na(log)]) Mode FALSE TRUE logical 4 2 > summary(TRUE) Mode TRUE logical 1 With R 3.3.1: > log <- c(NA, logical(4), NA, !logical(2), NA) > summary(log) Mode FALSE TRUE NA's logical 4 2 3 > summary(log[!is.na(log)]) Mode FALSE TRUE NA's logical 4 2 0 > summary(TRUE) Mode TRUE NA's logical 1 0 In R 3.3.1, "NA's' is always in the result of 'summary' of a logical vector. It is unlike 'summary' of a numeric vector. On the other hand, in R 3.3.1, FALSE is not in the result of 'summary' of a logical vector that doesn't contain FALSE. I prefer the result of 'summary' of a logical vector like in R 2.7.2, or, alternatively, the result that always includes all possible values: FALSE, TRUE, NA. ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel