วิธีค้นหาความยาวของสตริง (จำนวนอักขระในสตริง) โดยไม่แยกใน 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
nchar(NA)
NA
ตัว (แม้ว่าเอกสารนี้จะเป็นเช่นนั้น)
stri_length
จากstringi
- ทำงานได้ดีกับ NA's และเร็วขึ้น :) ตรวจสอบโพสต์ของฉัน!
nchar(NA) ## [1] NA
: ดูnchar RDocumentation
ใช้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
และทำงานได้ดีกับของนา
nchar(NA)
## [1] 2
stri_length(NA)
## [1] NA
stri_length('\u0105')
length is one แต่ ... ใช้stri_numbytes('\u0105')
2 ไบต์
nchar()
ขณะนี้มีบัญชีอาร์กิวเมนต์สำหรับ NA:allowNA = FALSE
คุณสามารถใช้stringr
แพ็คเกจนี้ได้:
library(stringr)
str_length("foo")
[1] 3
nchar("STRING")
ตรวจสอบนี้
ตัวเลือก keepNA = TRUE ป้องกันปัญหาเกี่ยวกับ NA
nchar(NA)
## [1] 2
nchar(NA, keepNA=TRUE)
## [1] NA
nchar(NA) ## [1] NA
: ดูnchar RDocumentation
nchar(YOURSTRING)
คุณอาจต้องแปลงเป็นเวกเตอร์อักขระก่อน
nchar(as.character(YOURSTRING))
nchar
ด้วยข้อยกเว้นของการป้อนข้อมูลปัจจัยที่ข่มขู่จะดำเนินการโดย สำหรับปัจจัยปัจจัยnchar
จะทำให้เกิดข้อผิดพลาดและด้วยเหตุนี้คุณจะต้องทำการแปลงก่อนตามที่คุณแสดง
x
เป็นตัวแปร