如何找到一个字符串的长度(字符串中的字符数),而不用在R中分割它?我知道如何找到一个列表的长度,但不是一个字符串。如何在R中查找字符串的长度?
那么Unicode字符串呢?如何查找Unicode字符串中的长度(以字节为单位)和字符数(符号,符号)?
相关问题:
如何找到一个字符串的长度(字符串中的字符数),而不用在R中分割它?我知道如何找到一个列表的长度,但不是一个字符串。如何在R中查找字符串的长度?
那么Unicode字符串呢?如何查找Unicode字符串中的长度(以字节为单位)和字符数(符号,符号)?
相关问题:
见?nchar
。例如:
> nchar("foo")
[1] 3
> set.seed(10)
> strn <- paste(sample(LETTERS, 10), collapse = "")
> strn
[1] "NHKPBEFTLY"
> nchar(strn)
[1] 10
要小心'nchar(NA)' – hadley
@hadley确实,或者就此而言,任何具有一个或多个“NA”的字符向量。 (虽然这被记录如此)。 –
或者从'stringi'使用'stri_length' - 它可以和NA一起工作,速度更快:)查看我的文章! – bartektartanus
nchar("STRING")
退房this
您也可以使用stringr
包:
library(stringr)
str_length("foo")
[1] 3
nchar(YOURSTRING)
您可能需要转换为字符向量第一;
nchar(as.character(YOURSTRING))
除了一个因素输入,强制是由'nchar'执行的。对于因子输入,'nchar'会引发错误,因此您需要首先进行转换。 –
使用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
谢谢你的答案和伟大的图书馆(这是你的图书馆,如果我理解它的权利)。那么Unicode字符串呢? –
工作也很好。看看这个例子: 'stri_length('\ u0105')'长度是一个,但是... 'stri_numbytes('\ u0105')'使用2个字节 – bartektartanus
的keepNA = TRUE选项防止问题NA
nchar(NA)
## [1] 2
nchar(NA, keepNA=TRUE)
## [1] NA
从3.3.1开始,基本默认设置为'nchar(NA) ## [1] NA':参见[nchar RDocumentation](https:/ /www.rdocumentation.org/packages/base/versions/3.3.1/topics/nchar) –
使用评估()沿用匿名函数返回最后一个元素 |向量c(8,4,0)。你的匿名函数应该只带一个参数,它应该是 |是一个变量'x'。 – uxi