কোনও ভেক্টর প্রদত্ত মান রয়েছে কিনা তা কীভাবে পরীক্ষা করবেন?
%
চিহ্নগুলি যোগ করার সাথে। শব্দটি in
লুপ নির্মাণে আর ব্যবহারের জন্য একটি সংরক্ষিত শব্দ।
select(iris, contains("etal"))
।
কোনও ভেক্টর প্রদত্ত মান রয়েছে কিনা তা কীভাবে পরীক্ষা করবেন?
%
চিহ্নগুলি যোগ করার সাথে। শব্দটি in
লুপ নির্মাণে আর ব্যবহারের জন্য একটি সংরক্ষিত শব্দ।
select(iris, contains("etal"))
।
উত্তর:
উভয়ই match()
(প্রথম উপস্থিতি ফিরিয়ে দেয়) এবং %in%
(একটি বুলিয়ান রিটার্ন দেয়) ফাংশনগুলি এর জন্য ডিজাইন করা হয়েছে।
v <- c('a','b','c','e')
'b' %in% v
## returns TRUE
match('b',v)
## returns the first location of 'b', in this case: 2
which(v, 'b')
। যুক্তিগুলির ক্রমটি মনে করুন।
which(v, 'b')
আমাকে একটি ত্রুটি বার্তা দেয়:> ত্রুটি যার মধ্যে (v, 'b'): '
is.element()
আরও পঠনযোগ্য কোড তৈরি করে এবং এর অনুরূপ %in%
v <- c('a','b','c','e')
is.element('b', v)
'b' %in% v
## both return TRUE
is.element('f', v)
'f' %in% v
## both return FALSE
subv <- c('a', 'f')
subv %in% v
## returns a vector TRUE FALSE
is.element(subv, v)
## returns a vector TRUE FALSE
is.element(x, y) is identical to x %in% y
। তবে, কেন জানি না, is.elements
পূর্ণসংখ্যা এবং %in%
is.element()
বনাম %in%
বিষয়গত হয়। একটি কেস তৈরি করা যেতে পারে যে একটি ইনফিক্স অপারেটর আরও পঠনযোগ্য কারণ এটি আর্গুমেন্টের ক্রমে অস্পষ্টতা দূর করে। apple in fruit
বোঝায়, fruit in apple
না। is.element(apple, fruit)
বা ফাংশন is.element(fruit, apple)
বাস্তবায়নের উপর নির্ভর করে উভয়ই সঠিক হতে পারে is.element
।
আমি আউটপুট উপর ভিত্তি করে বিকল্পগুলি গ্রুপ করব। সমস্ত উদাহরণের জন্য নিম্নলিখিত ভেক্টরটি ধরে নিন।
v <- c('z', 'a','b','a','e')
উপস্থিতি যাচাইয়ের জন্য:
%ভিতরে%
> 'a' %in% v
[1] TRUE
কোন ()
> any('a'==v)
[1] TRUE
is.element ()
> is.element('a', v)
[1] TRUE
প্রথম ঘটনা খুঁজে পাওয়ার জন্য:
ম্যাচ()
> match('a', v)
[1] 2
সূচকের ভেক্টর হিসাবে সমস্ত ঘটনা সন্ধানের জন্য:
যা ()
> which('a' == v)
[1] 2 4
লজিকাল ভেক্টর হিসাবে সমস্ত ঘটনা সন্ধান করার জন্য :
==
> 'a' == v
[1] FALSE TRUE FALSE TRUE FALSE
সম্পাদনা করুন: মন্তব্যে উল্লিখিত কারণে তালিকা থেকে গ্রেপ () এবং গ্রেপল () সরানো হচ্ছে
যে কোনও () ফাংশনটি পঠনযোগ্য কোডের জন্য তৈরি করে
> w <- c(1,2,3)
> any(w==1)
[1] TRUE
> v <- c('a','b','c')
> any(v=='b')
[1] TRUE
> any(v=='f')
[1] FALSE
any(1==NA, na.rm=TRUE)
ফেরত দেয় FALSE
।
এছাড়াও "যা" হিসাবে ব্যবহার করা যেতে পারে এমন উপাদানগুলির অবস্থান সন্ধান করতে
pop <- c(3,4,5,7,13)
which(pop==13)
এবং লক্ষ্য ভেক্টরে অন্তর্ভুক্ত নেই এমন উপাদানগুলি সন্ধান করতে, কেউ এটি করতে পারেন:
pop <- c(1,2,4,6,10)
Tset <- c(2,10,7) # Target set
pop[which(!(pop%in%Tset))]
which
আসলে এটি কখনও কখনও পছন্দনীয় হয় কারণ এটি আপনাকে সমস্ত মিলের অবস্থান দেয় (অ্যারে হিসাবে), বিপরীত match
। যদিও স্ট্যাকওভারফ্লো.com
which
আপনি যদি কেবল উপাদানগুলি না খুঁজে পেতে চান তবে কেন বিরক্ত করবেন Tset
? আপনি pop
সরাসরি সূচক করতে পারেন ; pop[!pop%in%Tset]
এই উদ্দেশ্যে আমি সত্যিই গ্রেপ () এবং গ্রেপল () পছন্দ করি।
গ্রেপ () পূর্ণসংখ্যার একটি ভেক্টর প্রদান করে, যা মিলগুলি কোথায় তা নির্দেশ করে।
yo <- c("a", "a", "b", "b", "c", "c")
grep("b", yo)
[1] 3 4
গ্রেপল () ম্যাচগুলির স্থানে "সত্য" সহ একটি যৌক্তিক ভেক্টর প্রদান করে।
yo <- c("a", "a", "b", "b", "c", "c")
grepl("b", yo)
[1] FALSE FALSE TRUE TRUE FALSE FALSE
এই ফাংশনগুলি কেস-সংবেদনশীল।
grep
এটির প্রথম উপাদান হিসাবে একটি নিয়মিত অভিব্যক্তি গ্রহণ করে, তাই "b"
ব্যবহার করুন ^e$
বা যুক্ত করুন , fixed=TRUE
) এর সাথে একটি সঠিক মিল করতে ।