407 Stimmen

Wie man die Länge einer Zeichenkette in R ermittelt

Wie findet man die Länge einer Zeichenkette (d. h. die Anzahl der Zeichen in einer Zeichenkette), ohne sie in R aufzuteilen? Ich weiß, wie man die Länge einer Liste findet, aber nicht die einer Zeichenkette.

Und was ist mit Unicode-Zeichenfolgen? Wie finde ich die Länge (in Bytes) und die Anzahl der Zeichen (Runen, Symbole) in einer Unicode-Zeichenkette?

Verwandte Frage:

490voto

Gavin Simpson Punkte 163780

Siehe ?nchar . Zum Beispiel:

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

76voto

bartektartanus Punkte 14061

使用方法 stringi Paket und stri_length Funktion

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

Warum? Weil es die SCHNELLSTE der vorgestellten Lösungen ist :)

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

und funktioniert auch gut mit NA's

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

EDIT 2021

NA Argument ist nicht mehr gültig, wenn Sie die neueste R-Version verwenden.

30voto

johannes Punkte 13561

Sie können auch die stringr Paket:

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

28voto

sobingt Punkte 382
nchar("STRING")

Überprüfen Sie ce

13voto

Thomas Buhl Punkte 193

Die Option keepNA = TRUE verhindert Probleme mit NA

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X