web-dev-qa-db-ja.com

Rで文字列の長さを調べる方法

Rで分割せずに文字列の長さ(文字列の文字数)を調べるにはどうすればいいですか?リストの長さを調べる方法は知っていますが、文字列の長さはわかりません。

そして、Unicode文字列はどうでしょうか。 Unicode文字列の長さ(バイト数)と文字数(ルーン文字、記号文字)を知るにはどうすればいいですか?

関連質問:

310
Igor Chubin

?ncharを参照してください。例えば:

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

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

そしてまたNAのとうまく働きます

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

チェックアウト これ

23
sobingt

stringrパッケージを使うこともできます。

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

KeepNA = TRUEオプションはNAの問題を防ぎます

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

最初に文字ベクトルに変換する必要があるかもしれません。

nchar(as.character(YOURSTRING))
6
Jonathan