R에서 문자열의 길이를 찾는 방법


348

R에서 나누지 않고 문자열의 길이 (문자열의 문자 수)를 찾는 방법은 무엇입니까? 문자열의 길이가 아닌 목록의 길이를 찾는 방법을 알고 있습니다.

그리고 유니 코드 문자열은 어떻습니까? 유니 코드 문자열에서 길이 (바이트)와 문자 수 (런, 기호)를 찾으려면 어떻게합니까?

관련 질문 :


1
anonymous 함수와 함께 evaluation ()을 사용하여 | 벡터 c (8, 4, 0). 익명 함수는 하나의 인수 만 취해야하며 | 변수 여야합니다 x.
uxi

답변:


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

@hadley 실제로, 또는 그 문제에 대해 하나 이상의 NAs가 있는 문자형 벡터입니다 . (그렇게 문서화되어 있음).
Gavin Simpson

7
또는 사용 stri_length에서이 stringi- 그것은 NA의 함께 잘 작동하며 빠른 :) 내 게시물을 확인!
bartektartanus

6
3.3.1 기준으로 기본 기본값이 제공하는 설정 nchar(NA) ## [1] NA을 참조하십시오 NCHAR RDocumentation
leerssej

3
@ IgorChubin 당신은 거의 2 살짜리 질문을 편집하지 말고 새로운 질문으로 질문해야합니다.
Gavin Simpson

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
답변과 훌륭한 도서관에 감사드립니다 (내가 올바르게 이해하면 도서관입니다). 유니 코드 문자열은 어떻습니까?
Igor Chubin

1
잘 작동합니다. 이 예제를보십시오 : stri_length('\u0105') 길이는 1이지만 ... stri_numbytes('\u0105') 2 바이트가 사용됩니다
bartektartanus

때문에 업데이트해야합니다 nchar(): 지금 NA의의 인수 계정이allowNA = FALSE
라일 핀

26

stringr패키지를 사용할 수도 있습니다 .

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


8

keepNA = TRUE 옵션은 NA 관련 문제를 방지합니다

nchar(NA)
## [1] 2
nchar(NA, keepNA=TRUE)
## [1] NA

1
3.3.1 기준으로 기본 기본값이 제공하는 설정 nchar(NA) ## [1] NA을 참조하십시오 NCHAR RDocumentation
leerssej

6
nchar(YOURSTRING)

먼저 문자형 벡터로 변환해야 할 수도 있습니다.

nchar(as.character(YOURSTRING))

1
요인 입력을 제외하고는 강제 변환이에 의해 수행됩니다 nchar. 요인 입력의 nchar경우 오류가 발생하므로 표시 할 때 먼저 변환을 수행해야합니다.
Gavin Simpson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.