如何在R中计算字符串长度(即字符串中字符的数量)而不拆分它?我知道如何计算列表的长度,但不知道如何计算字符串的长度。
那么对于Unicode字符串呢?如何计算Unicode字符串的字节长度和字符(符文、符号)数量?
相关问题:
如何在R中计算字符串长度(即字符串中字符的数量)而不拆分它?我知道如何计算列表的长度,但不知道如何计算字符串的长度。
那么对于Unicode字符串呢?如何计算Unicode字符串的字节长度和字符(符文、符号)数量?
相关问题:
看看 ?nchar
。例如:
> nchar("foo")
[1] 3
> set.seed(10)
> strn <- paste(sample(LETTERS, 10), collapse = "")
> strn
[1] "NHKPBEFTLY"
> nchar(strn)
[1] 10
NA
的字符向量。(尽管这已经有记录了)。 - Gavin Simpsonstringi
中的stri_length
- 它可以很好地处理NA值并且速度更快 :) 查看我的帖子! - bartektartanus使用 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
如果您在使用最新版本的R,NA
参数将不再有效。
stri_length('\u0105')
长度为1,但是...
stri_numbytes('\u0105')
使用了2个字节 - bartektartanusnchar()
现在有一个参数可以处理NA值:allowNA = FALSE
。 - Riley Finnnchar(NA)
现在是 NA
- R 4.0.4 - Rafs你也可以使用 stringr
包:
library(stringr)
str_length("foo")
[1] 3
keepNA = TRUE选项可以避免与NA值相关的问题
nchar(NA)
## [1] 2
nchar(NA, keepNA=TRUE)
## [1] NA
nchar(YOURSTRING)
你可能需要先将其转换为字符向量;
nchar(as.character(YOURSTRING))
nchar
执行的。对于因子输入,nchar
会抛出错误,因此您需要首先进行转换,如您所示。 - Gavin Simpson