R में स्ट्रिंग की लंबाई कैसे पता करें


348

आर में विभाजित किए बिना एक स्ट्रिंग की लंबाई (एक स्ट्रिंग में वर्णों की संख्या) कैसे ढूंढें? मुझे पता है कि सूची की लंबाई कैसे मिल सकती है लेकिन स्ट्रिंग की नहीं।

और यूनिकोड के तार के बारे में क्या? मैं यूनिकोड स्ट्रिंग में लंबाई (बाइट्स में) और वर्णों की संख्या (रन, प्रतीक) कैसे खोजूं?

संबंधित प्रश्न:


1
अंतिम तत्व को वापस करने के लिए एक अनाम फ़ंक्शन के साथ मूल्यांकन () का उपयोग करना | वेक्टर सी (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)
हैडली

@ हडली वास्तव में, या उस मामले के लिए एक या अधिक NAएस के साथ किसी भी वर्ण वेक्टर । (हालांकि यह ऐसा होने के लिए प्रलेखित है)।
गेविन सिम्पसन

7
या उपयोग stri_lengthसे stringi- यह एनए के साथ ठीक काम करता है और यह तेजी से है :) मेरी पोस्ट की जाँच करें!
बार्टार्टार्टनस

6
3.3.1 तक आधार डिफॉल्ट देने के लिए तैयार हैं nchar(NA) ## [1] NA: nchar RDocumentation
leerssej

3
@IgorChubin को आपको एक नए प्रश्न के रूप में पूछना चाहिए, न कि लगभग 2 साल पुराने को संपादित करना।
गैविन सिम्पसन

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
उत्तर के लिए और महान पुस्तकालय के लिए धन्यवाद (यह आपकी लाइब्रेरी है अगर मैंने इसे सही समझा)। यूनिकोड के तार के बारे में क्या?
इगोर चुबिन

1
ठीक भी काम करता है। इस उदाहरण को देखें: stri_length('\u0105') लंबाई एक है, लेकिन ... stri_numbytes('\u0105') 2 बाइट्स का उपयोग किया जाता है
bartektartanus

इसे अपडेट किया जाना चाहिए क्योंकि nchar()अब NA के लिए एक तर्क खाता है:allowNA = FALSE
रिले फिन

26

आप stringrपैकेज का उपयोग भी कर सकते हैं :

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



6
nchar(YOURSTRING)

आपको पहले एक चरित्र वेक्टर में बदलने की आवश्यकता हो सकती है;

nchar(as.character(YOURSTRING))

1
एक कारक इनपुट के अपवाद के साथ, जबरदस्ती प्रदर्शन किया जाता है nchar। फैक्टर इनपुट के लिए, ncharएक एरर फेकेंगे और इसलिए आपको सबसे पहले रूपांतरण दिखाना होगा।
गैविन सिम्पसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.