nchar {base} | R Documentation |
nchar
takes a character vector as an argument and
returns a vector whose elements contain the sizes of
the corresponding elements of x
.
nchar(x, type = c("bytes", "chars", "width"))
x |
character vector, or a vector to be coerced to a character vector. |
type |
character string: partial matching is allowed. See Details. |
The ‘size’ of a character string can be measured in one of three ways
bytes
chars
width
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.
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.
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
.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
strwidth
giving width of strings for plotting;
paste
, substr
, strsplit
x <- c("asfef","qwerty","yuiop[","b","stuff.blah.yech") nchar(x) # 5 6 6 1 15 nchar(deparse(mean)) # 18 17