385

如何找到字符串的长度(即字符串中的字符数)而不在R中拆分它?我知道如何找到列表的长度,但不知道字符串的长度。

那么Unicode字符串呢?如何找到 Unicode 字符串中的长度(以字节为单位)和字符数(符文、符号)?

相关问题:

4

6 回答 6

470

?nchar。例如:

> nchar("foo")
[1] 3
> set.seed(10)
> strn <- paste(sample(LETTERS, 10), collapse = "")
> strn
[1] "NHKPBEFTLY"
> nchar(strn)
[1] 10
于 2012-06-21T09:04:45.930 回答
74

使用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

编辑 2021

NA如果您使用的是最新的 R 版本,则参数不再有效。

于 2014-03-14T09:36:02.750 回答
27

你也可以使用这个stringr包:

library(stringr)
str_length("foo")
[1] 3
于 2012-06-21T09:18:01.103 回答
26
nchar("STRING")

看看这个

于 2012-06-21T09:07:41.307 回答
9

keepNA = TRUE 选项可防止 NA 出现问题

nchar(NA)
## [1] 2
nchar(NA, keepNA=TRUE)
## [1] NA
于 2016-03-09T09:48:09.700 回答
7
nchar(YOURSTRING)

您可能需要先转换为字符向量;

nchar(as.character(YOURSTRING))
于 2013-02-09T20:12:23.903 回答