Hoe vind je de lengte van een string in R

Hoe vind je de lengte van een string (aantal karakters in een string) zonder deze te splitsen in R? Ik weet hoe ik de lengte van een lijst kan vinden, maar niet van een string.

En hoe zit het met Unicode-strings? Hoe vind ik de lengte (in bytes) en het aantal karakters (runen, symbolen) in een Unicode-string?

Verwante vraag:


Antwoord 1, autoriteit 100%

Zie ?nchar. Bijvoorbeeld:

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

Antwoord 2, autoriteit 16%

Gebruik stringipakket en stri_lengthfunctie

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

Waarom? Omdat het de SNELSTE onder de gepresenteerde oplossingen is 🙂

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

en werkt ook prima met NA’s

nchar(NA)
## [1] 2
stri_length(NA)
## [1] NA

BEWERK 2021

NAargument is niet langer geldig als je de nieuwste R-versie gebruikt.


Antwoord 3, autoriteit 6%

Je zou ook het pakket stringrkunnen gebruiken:

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

Antwoord 4, autoriteit 5%

nchar("STRING")

Bekijk dit


Antwoord 5, autoriteit 2%

De optie keepNA = TRUE voorkomt problemen met NA

nchar(NA)
## [1] 2
nchar(NA, keepNA=TRUE)
## [1] NA

Antwoord 6

nchar(YOURSTRING)

het kan zijn dat u eerst moet converteren naar een tekenvector;

nchar(as.character(YOURSTRING))

Other episodes