nchar
Lengths of Character Strings
Description
nchar returns a vector of the lengths (or bytes or width) of the character 
strings in the input. 
nzchar is a convenient function to check the empty/non-empty string 
status in a character vector. 
Usage
nchar(x, type = "chars", allowNA = FALSE, keepNA = FALSE)
nzchar(x, keepNA = FALSE)
Arguments
| x | a character vector or another object that can be converted to a character 
vector. | 
| type | a character string specifying how to calculate the result. type 
should be either "bytes", "chars", or "width", 
or it should be a prefix of one of these strings. | 
| allowNA | a logical flag. If TRUE, if nchar cannot calculate a result,
nchar returns NA rather than generating an error. The 
default is FALSE. | 
| keepNA | a logical flag.  If TRUE, nchar and nzchar will map
missing values (NA) in x to missing values.  If FALSE,
the default, nchar will map missing values to 2 (the same
as nchar("NA")) and nzchar will map them to TRUE. | 
 
Details
You can calculate the size of a character string, specified by the 
argument 
type, using one of the following three types:
-  "chars": the number of human-readable characters.
-  "bytes": the number of bytes needed to store the string.
-  "width": The number of columns cat would use to 
print the string in a monospaced font.
Usually these three types produce the same value,
unless the string contains multibyte characters or wide 
Unicode characters.
If a string has the 'bytes' encoding (see 
Encoding),
it cannot be interpreted as a sequence of characters
when the 
type argument is 
"chars" or 
"width".
In this case, 
nchar generates an error (if 
allowNA is 
FALSE), or produces an 
NA value for the size (if 
allowNA is 
TRUE).  If 
type is 
"bytes", 
it always produces the number of bytes in the string, whether or 
not the bytes can be interpreted as characters.
Note: x is coerced to character, regardless of what it currently
contains.
This coercion always works, but in the case of non-atomic data the 
result might be surprising.
Value
| nchar | returns a numeric vector the same length as x that contains the 
size of each element of x, converted to a character string. | 
| nzchar | returns a logical vector the same length as x. 
TRUE if the element of x contains non-empty string, otherwise FALSE. | 
 
Differences between Spotfire Enterprise Runtime for R and Open-source R
In open-source R, nchar generates an error (or returns NA if
allowNA is TRUE) if the string contains an invalid
multi-byte character sequence and the type argument is "chars" or "width".
See Also
Examples
# example strings, including a wide Japanese character
x <- c('a','bb','hello', '\u30A4')
nchar(x)
# [1] 1 2 5 1
nchar(x, "bytes")
# [1] 1 2 5 3
# '\u30A4' is represented as 3 bytes in UTF-8
nchar(x, "width")
# [1] 1 2 5 2
# '\u30A4' is a double-wide character
z <- rawToChar(as.raw(1:255)); Encoding(z) <- 'bytes'
Encoding(z)
#[1] "bytes"
nchar(z)
# Error in nchar(z) : cannot determine character count for 
# 'bytes' encoding
nchar(z, allowNA=TRUE)
# [1] NA
nchar(z, 'bytes')
# [1] 255
nzchar(c("12.34", "test", "", "\u30A4", z))
# [1]  TRUE  TRUE FALSE  TRUE  TRUE