Examples for 'base::nchar'


Count the Number of Characters (or Bytes or Width)

Aliases: nchar nzchar

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)

[Package base version 4.2.3 Index]