Rで文字列の長さを見つける方法


348

Rで分割せずに文字列の長さ(文字列の文字数)を見つける方法は?文字列ではなくリストの長さを見つける方法を知っています。

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

関連質問:


1
の最後の要素を返すために無名関数と共にevaluate()を使用する ベクトルc(8、4、0)。匿名関数は、1つの引数のみを取る必要があります。変数ですx
uxi 2017

回答:


417

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

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

55
注意してくださいnchar(NA)
ハドリー

@hadley確かに、またはさらに言えば、1つ以上NAのsを持つ任意の文字ベクトル。(これはそのように文書化されていますが)。
Gavin Simpson

7
またはstri_lengthfromを使用しますstringi-NAでうまく機能し、より高速です:)私の投稿をチェックしてください!
bartektartanus 14

6
3.3.1以降、基本のデフォルトは次のように設定されていnchar(NA) ## [1] NAます。ncharRDocumentationを
leerssej

3
@IgorChubinほぼ2年前のものを編集するのではなく、これを新しい質問として質問してください。
ギャビンシンプソン

66

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

1
答えと素晴らしいライブラリーをありがとう(私が正しく理解できればあなたのライブラリーです)。Unicode文字列はどうですか?
イゴールチュビン2017

1
うまくいきます。この例を見てください:stri_length('\u0105') 長さは1ですが... stri_numbytes('\u0105') 2バイトが使用されます
bartektartanus

これは、更新する必要がありますnchar():今、引数はNAのを占めていますallowNA = FALSE
ライリー・フィン

26

stringrパッケージを使用することもできます:

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



6
nchar(YOURSTRING)

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

nchar(as.character(YOURSTRING))

1
因子入力を除いて、強制はによって実行されncharます。因子入力の場合nchar、エラーがスローされるため、表示するように最初に変換を行う必要があります。
Gavin Simpson
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.