如何在R中找到字符串的长度?

Igo*_*bin 329 string unicode r string-length

如何在不拆分R的情况下找到字符串的长度(字符串中的字符数)?我知道如何找到列表的长度而不是字符串的长度.

那么Unicode字符串怎么样?如何在Unicode字符串中找到长度(以字节为单位)和字符数(符文,符号)?

相关问题:

Rei*_*son 396

?nchar.例如:

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

  • 小心`nchar(NA)` (54认同)
  • 或者从`stringi`使用`stri_length` - 它与NA的工作正常,它更快:)检查我的帖子! (7认同)
  • 从3.3.1开始,基本默认设置为`nchar(NA)## [1] NA`:参见[nchar RDocumentation](https://www.rdocumentation.org/packages/base/versions/3.3.1 /主题/ NCHAR) (6认同)
  • @IgorChubin你应该问这是一个新问题,而不是编辑一个差不多2岁的问题. (3认同)

bar*_*nus 65

使用stringi包和stri_length功能

> stri_length(c("ala ma kota","ABC",NA))
[1] 11  3 NA
Run Code Online (Sandbox Code Playgroud)

为什么?因为它是提出的解决方案中最快的:)

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
Run Code Online (Sandbox Code Playgroud)

和NA一起工作也很好

nchar(NA)
## [1] 2
stri_length(NA)
## [1] NA
Run Code Online (Sandbox Code Playgroud)


joh*_*nes 25

你也可以使用这个stringr包:

library(stringr)
str_length("foo")
[1] 3
Run Code Online (Sandbox Code Playgroud)


小智 7

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

nchar(NA)
## [1] 2
nchar(NA, keepNA=TRUE)
## [1] NA
Run Code Online (Sandbox Code Playgroud)


小智 6

nchar(YOURSTRING)
Run Code Online (Sandbox Code Playgroud)

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

nchar(as.character(YOURSTRING))
Run Code Online (Sandbox Code Playgroud)