Keywords: character
### ** Examples x <- c("asfef", "qwerty", "yuiop[", "b", "stuff.blah.yech") nchar(x)
[1] 5 6 6 1 15
# 5 6 6 1 15 nchar(deparse(mean))
[1] 18 17
# 18 17 <-- unless mean differs from base::mean ## NA behaviour as function of keepNA=* : logi <- setNames(, c(FALSE, NA, TRUE)) sapply(logi, \(k) data.frame(nchar = nchar (NA, keepNA=k), nzchar = nzchar(NA, keepNA=k)))
FALSE <NA> TRUE nchar 2 NA NA nzchar TRUE TRUE NA
x[3] <- NA; x
[1] "asfef" "qwerty" NA "b" [5] "stuff.blah.yech"
nchar(x, keepNA= TRUE) # 5 6 NA 1 15
[1] 5 6 NA 1 15
nchar(x, keepNA=FALSE) # 5 6 2 1 15
[1] 5 6 2 1 15
stopifnot(identical(nchar(x ), nchar(x, keepNA= TRUE)), identical(nchar(x, "w"), nchar(x, keepNA=FALSE)), identical(is.na(x), is.na(nchar(x)))) ##' nchar() for all three types : nchars <- function(x, ...) vapply(c("chars", "bytes", "width"), function(tp) nchar(x, tp, ...), integer(length(x))) nchars("\u200b") # in R versions (>= 2015-09-xx):
chars bytes width 1 3 0
## chars bytes width ## 1 3 0 data.frame(x, nchars(x)) ## all three types : same unless for NA
x chars bytes width 1 asfef 5 5 5 2 qwerty 6 6 6 3 <NA> NA NA 2 4 b 1 1 1 5 stuff.blah.yech 15 15 15
## force the same by forcing 'keepNA': (ncT <- nchars(x, keepNA = TRUE)) ## .... NA NA NA ....
chars bytes width [1,] 5 5 5 [2,] 6 6 6 [3,] NA NA NA [4,] 1 1 1 [5,] 15 15 15
(ncF <- nchars(x, keepNA = FALSE))## .... 2 2 2 ....
chars bytes width [1,] 5 5 5 [2,] 6 6 6 [3,] 2 2 2 [4,] 1 1 1 [5,] 15 15 15
stopifnot(apply(ncT, 1, function(.) length(unique(.))) == 1, apply(ncF, 1, function(.) length(unique(.))) == 1)