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 stringi
pakket en stri_length
functie
> 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
NA
argument is niet langer geldig als je de nieuwste R-versie gebruikt.
Antwoord 3, autoriteit 6%
Je zou ook het pakket stringr
kunnen 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))