Learn R Programming

icd (version 3.2.0)

factor_split_na: (re-)factor and split into matched and unmatched elements

Description

I think this is now obsolete, now I have better integer-based re-factoring in C++.

Usage

factor_split_na(x, levels, factor_fun = factor_nosort_rcpp)

Arguments

Details

Critically, this function does not convert factor to character vector and back to factor in order to modify factor levels, resulting in huge speed improvements for long vectors.

Examples

Run this code
# NOT RUN {
icd:::factor_nosort_rcpp(c("1", NA)) # NA becomes a level
icd:::factor_nosort_rcpp(c("1", "2"), "1") # NA not a level, just dropped!
icd:::factor_nosort_rcpp(c("1", "2"), c("1", NA)) # NA IS a level
# }
# NOT RUN {
x <- c("A", "B", "C", "d", "A", "C")
levels <- c("A", "B")
stopifnot(
  identical(icd:::factor_split_na(factor(x), levels),
            icd:::factor_split_na(x, levels))
)
y <- c("A", NA, "B", "A", NA)
yf <- factor(y)
yf_na <- factor(y, levels = c("A", NA, "B"), exclude = NULL)
stopifnot(
  identical(icd:::factor_split_na(y, "A"),
            icd:::factor_split_na(yf, "A"))
)
stopifnot(
  identical(icd:::factor_split_na(y, "A"),
            icd:::factor_split_na(yf_na, "A"))
)
# }

Run the code above in your browser using DataLab