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 = "bytes")

### Arguments

`x` | character vector, or a vector to be coerced to a character vector.
`type` | character string: partial matching to one of `c("bytes", "chars", "width")`. 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.3.1 Index]