আর-এ কোনও স্ট্রিংয়ের দৈর্ঘ্য কীভাবে সন্ধান করতে হয়


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)
হ্যাডলি

@ হ্যাডলি প্রকৃতপক্ষে, বা এই ক্ষেত্রে এক বা একাধিক NAs এর সাথে কোনও চরিত্রের ভেক্টর । (যদিও এটি ডকুমেন্টেড রয়েছে)।
গ্যাভিন সিম্পসন

7
বা এর stri_lengthথেকে ব্যবহার করুন stringi- এটি এনএ এর সাথে দুর্দান্ত কাজ করে এবং এটি আরও দ্রুত :) আমার পোস্টটি দেখুন!
বারটেকার্টানাস

6
৩.৩.১ হিসাবে বেস ডিফল্টগুলি দিতে প্রস্তুত রয়েছে nchar(NA) ## [1] NA: দেখুন এনসিআর আরডকোমেন্টেশন
লার্সজেজ

3
@ আইগোরচাবিন আপনার এটি একটি নতুন প্রশ্ন হিসাবে জিজ্ঞাসা করা উচিত, প্রায় ২ বছরের পুরানো সম্পাদনা করবেন না।
গ্যাভিন সিম্পসন

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

এবং এনএ এর সাথেও কাজ করে works

nchar(NA)
## [1] 2
stri_length(NA)
## [1] NA

1
উত্তরের জন্য এবং দুর্দান্ত গ্রন্থাগারের জন্য আপনাকে ধন্যবাদ (এটি সঠিকভাবে বুঝতে পারলে এটি আপনার গ্রন্থাগার)। ইউনিকোড স্ট্রিং সম্পর্কে কি?
ইগর চুবিন

1
খুব ভাল কাজ করে। এই উদাহরণটি দেখুন: stri_length('\u0105') দৈর্ঘ্য এক, তবে ... stri_numbytes('\u0105') 2 বাইট ব্যবহৃত হয়
বারটেকটার্টানাস

এটি আপডেট করা উচিত কারণ nchar()এখন এনএ'র পক্ষে যুক্তিযুক্ত অ্যাকাউন্ট রয়েছে:allowNA = FALSE
রিলে ফিন



8

কিএনএনএ = সত্য বিকল্পটি এনএতে সমস্যাগুলি প্রতিরোধ করে

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

1
৩.৩.১ হিসাবে বেস ডিফল্টগুলি দিতে প্রস্তুত রয়েছে nchar(NA) ## [1] NA: দেখুন এনসিআর আর ডকুমেন্টেশন
লার্সজেজ

6
nchar(YOURSTRING)

আপনাকে প্রথমে একটি চরিত্রের ভেক্টরে রূপান্তর করতে হবে;

nchar(as.character(YOURSTRING))

1
একটি ফ্যাক্টর ইনপুট ব্যতীত, জোর করে সম্পাদন করা হয় nchar। ফ্যাক্টর ইনপুটগুলির জন্য, ncharএকটি ত্রুটি নিক্ষেপ করবে এবং তাই আপনাকে দেখানোর আগে আপনাকে প্রথমে রূপান্তরটি করতে হবে।
গ্যাভিন সিম্পসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.