web-dev-qa-db-fra.com

Comment trouver la longueur d'une chaîne dans R

Comment trouver la longueur d'une chaîne (nombre de caractères dans une chaîne) sans la scinder en R? Je sais comment trouver la longueur d'une liste mais pas celle d'une chaîne.

Et qu'en est-il des chaînes Unicode? Comment trouver la longueur (en octets) et le nombre de caractères (runes, symboles) dans une chaîne Unicode?

Question connexe:

324
Igor Chubin

Voir ?nchar. Par exemple:

> nchar("foo")
[1] 3
> set.seed(10)
> strn <- paste(sample(LETTERS, 10), collapse = "")
> strn
[1] "NHKPBEFTLY"
> nchar(strn)
[1] 10
388
Gavin Simpson

Utiliser le package stringi et la fonction stri_length

> stri_length(c("ala ma kota","ABC",NA))
[1] 11  3 NA

Pourquoi? Parce que c'est la plus rapide parmi les solutions présentées :)

require(microbenchmark)
require(stringi)
require(stringr)
x <- c(letters,NA,paste(sample(letters,2000,TRUE),collapse=" "))
microbenchmark(nchar(x),str_length(x),stri_length(x))
Unit: microseconds
           expr    min     lq  median      uq     max neval
       nchar(x) 11.868 12.776 13.1590 13.6475  41.815   100
  str_length(x) 30.715 33.159 33.6825 34.1360 173.400   100
 stri_length(x)  2.653  3.281  4.0495  4.5380  19.966   100

et fonctionne aussi très bien avec NA

nchar(NA)
## [1] 2
stri_length(NA)
## [1] NA
65
bartektartanus
nchar("STRING")

Départ this

25
sobingt

Vous pouvez également utiliser le package stringr:

library(stringr)
str_length("foo")
[1] 3
24
johannes

L'option keepNA = TRUE évite les problèmes avec NA

nchar(NA)
## [1] 2
nchar(NA, keepNA=TRUE)
## [1] NA
7
Thomas Buhl
nchar(YOURSTRING)

vous devrez peut-être d'abord convertir un vecteur de caractère;

nchar(as.character(YOURSTRING))
6
Jonathan