Використовуйте stringi
пакет і stri_length
функцію
> stri_length(c("ala ma kota","ABC",NA))
[1] 11 3 NA
Чому? Тому що це найшвидший серед представлених рішень :)
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
а також чудово працює з НС
nchar(NA)
## [1] 2
stri_length(NA)
## [1] NA
x
.