ট্রু বা ফলস মান R-এ logical টাইপ দিয়ে প্রকাশ করা হয়। এতে মাত্র দুটি মান থাকে: TRUE এবং FALSE.
TRUE
#> [1] TRUE
FALSE
#> [1] FALSE
typeof(TRUE)
#> [1] "logical"
R-এ মোট পাঁচটি বুলিয়ান অপারেটর আছে।
!TRUE # FALSE (not)
TRUE && FALSE # FALSE (scalar and)
TRUE || FALSE # TRUE (scalar or)
TRUE & FALSE # FALSE (vector and)
TRUE | FALSE # TRUE (vector or)
&& আর & হলো বুলিয়ান "অ্যান্ড"।
&&-এর দুই পাশের এক্সপ্রেশনই TRUE হলে এদের ফলাফল TRUE হয়।
|| আর | হলো বুলিয়ান "অর"।
||-এর যেকোনো এক পাশের এক্সপ্রেশন TRUE হলে এদের ফলাফল TRUE হয়।
লক্ষ্য করুন, অ্যান্ড/অর অপারেটরের দুটি সেট রয়েছে।
এই পার্থক্যটি vector-filtering ধারণায় গুরুত্বপূর্ণ হয়ে উঠবে, এবং সম্ভবত আরও স্পষ্টও হবে।
উপরের উদাহরণে একক মানের উপর & আর | ব্যবহার করা কাজ করে, কারণ এগুলোকে দৈর্ঘ্য ১-এর ভেক্টর হিসেবে ধরা হয়।
দুই অক্ষরের অপারেটরগুলোর তুলনায় এই আচরণ সূক্ষ্মভাবে আলাদা, কারণ কেবল ওই অপারেটরগুলোই "শর্ট-সার্কিটিং": বাঁ দিকের মানটি ফলাফল নির্ধারণের জন্য যথেষ্ট হলে ডান দিকের মানটি আর মূল্যায়ন করা হয় না।
তাই TRUE || anything-এর ফলাফল সবসময়ই TRUE, anything যে-ই লজিক্যাল এক্সপ্রেশন বোঝাক না কেন, ফলে anything-কে উপেক্ষা করা হয়।
ভেক্টরের (দৈর্ঘ্য ২ বা তার বেশি) উপর && বা || ব্যবহার করলে তুলনায় কেবল প্রথম এলিমেন্টটিই ব্যবহৃত হয়, ফলে একটি মাত্র TRUE/FALSE পাওয়া যায় এবং সম্ভবত একটি ওয়ার্নিং মেসেজও।
এটি সম্ভবত আপনি যা চেয়েছিলেন তা নয়।
! হলো বুলিয়ান "নট"।
এটি TRUE আর FALSE মান পরস্পরের সাথে বদলে দেয়।
!TRUE
#> [1] FALSE
!FALSE
#> [1] TRUE
আরও দীর্ঘ ও জটিল এক্সপ্রেশনের ক্ষেত্রে নিজের উদ্দেশ্য স্পষ্ট করার জন্য বন্ধনী ব্যবহার করাই সবচেয়ে ভালো।
(TRUE || FALSE) && (FALSE && TRUE)
#> [1] FALSE
TRUE || FALSE && (FALSE && TRUE)
#> [1] TRUE
এক্সক্লুসিভ অরের (অর্থাৎ A অথবা B, কিন্তু দুটোই নয়) জন্য কোনো ইনফিক্স অপারেটর নেই। এক্ষেত্রে xor() ফাংশনটি ব্যবহার করা যায়।
xor(TRUE, FALSE)
#> [1] TRUE
xor(TRUE, TRUE)
#> [1] FALSE