nchar {base}R Documentation

Count the Number of Characters (Bytes)

Description

nchar takes a character vector as an argument and returns a vector whose elements contain the sizes of the corresponding elements of x.

Usage

nchar(x, type = c("bytes", "chars", "width"))

Arguments

x character vector, or a vector to be coerced to a character vector.
type character string: partial matching is allowed. See Details.

Details

The ‘size’ of a character string can be measured in one of three ways

bytes
The number of bytes needed to store the string (plus in C a final terminator which is not counted).
chars
The number of human-readable characters.
width
The number of columns cat will use to print the string in a monospaced font. The same as chars if this cannot be calculated (which is currently common).

These will often be the same, and always will be in single-byte locales. There will be differences between the first two with multibyte character sequences, e.g. in UTF-8 locales. If the byte stream contains embedded nul bytes, type = "bytes" looks at all the bytes whereas the other two types look only at the string as printed by cat, up to the first nul byte.

The internal equivalent of the default method of as.character is performed on x. If you want to operate on non-vector objects passing them through deparse first will be required.

Value

An integer vector giving the size of each string, currently always 2 for missing values (for NA).
Not all platforms will return a non-missing value for type="width".
If the string is invalid in a multi-byte character set such as UTF-8, the number of characters and the width will be NA. Otherwise the number of characters will be non-negative, so !is.na(nchar(x, "chars")) is a test of validity.

Note

This does not by default give the number of characters that will be used to print() the string, although it was documented to do so up to R 2.0.1. Use encodeString to find the characters used to print the string.

As from R 2.1.0 embedded nul bytes are included in the byte count (but not the final nul): previously the count stopped immediately before the first nul.

References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

See Also

strwidth giving width of strings for plotting; paste, substr, strsplit

Examples

x <- c("asfef","qwerty","yuiop[","b","stuff.blah.yech")
nchar(x)
# 5  6  6  1 15

nchar(deparse(mean))
# 18 17

[Package base version 2.1.0 Index]