সংক্ষিপ্ততরগুলি ভেক্টরাইজড, যার অর্থ তারা ভেক্টরকে এইরকম ফিরে আসতে পারে:
((-2:2) >= 0) & ((-2:2) <= 0)
# [1] FALSE FALSE TRUE FALSE FALSE
লম্বা ফর্ম প্রতিটি ভেক্টরের কেবল প্রথম উপাদানটি পরীক্ষা করে বাম থেকে ডানকে মূল্যায়ন করে, সুতরাং উপরেরটি দেয় gives
((-2:2) >= 0) && ((-2:2) <= 0)
# [1] FALSE
সহায়তার পৃষ্ঠাটি যেমনটি বলেছে এটি দীর্ঘতর রূপটিকে "প্রোগ্রামিং নিয়ন্ত্রণ প্রবাহের জন্য উপযুক্ত এবং [যদি] সাধারণত ক্লোসগুলিতে পছন্দ করা হয় তবে তা তৈরি হয়।"
সুতরাং আপনি দীর্ঘ ফর্মগুলি কেবল তখনই ব্যবহার করতে চান যখন আপনি নিশ্চিত হন যে ভেক্টরগুলির দৈর্ঘ্য একটি।
আপনার ভেক্টরগুলির দৈর্ঘ্য 1 সম্পূর্ণরূপে নিশ্চিত হওয়া উচিত , যেমন তাদের ক্ষেত্রে কেবলমাত্র দৈর্ঘ্য 1 বুলিয়ান ফিরে আসে functions আপনি যদি সংক্ষিপ্ত ফর্মগুলি ব্যবহার করতে চান তবে ভেক্টরগুলির দৈর্ঘ্য সম্ভাব্য> 1 হয়। তাই আপনি যদি একেবারে নিশ্চিত না হন, হয় আপনি প্রথমটি যাচাই করুন, বা সংক্ষেপে ফর্ম ব্যবহার এবং তারপর ব্যবহার করা উচিত all
এবং any
নিয়ন্ত্রণ প্রবাহ বিবৃতি ব্যবহারের জন্য দৈর্ঘ্য এক এটি কমাতে মত if
।
ক্রিয়াকলাপগুলি all
এবং any
প্রায়শই যথাযথভাবে সমস্ত বা কোনও তুলনা সত্য কিনা তা দেখার জন্য ভেক্টরাইজড তুলনার ফলাফলের জন্য ব্যবহৃত হয়। এই ফাংশনগুলি থেকে ফলাফলগুলি দৈর্ঘ্য 1 হওয়ার বিষয়ে নিশ্চিত তাই তারা যদি অনুচ্ছেদগুলির তুলনায় প্রাপ্ত ফলাফলগুলি না হয় তবে ক্লজগুলি সেগুলি ব্যবহারের জন্য উপযুক্ত। (যদিও এই ফলাফলগুলি ব্যবহারের জন্য উপযুক্ত হবে ifelse
।
একটি চূড়ান্ত পার্থক্য: &&
এবং ||
কেবলমাত্র যতগুলি শর্ত প্রয়োজন তা মূল্যায়ন করুন (যা মনে হয় শর্ট সার্কিট দ্বারা বোঝানো)। উদাহরণস্বরূপ, এখানে একটি অপরিবর্তিত মান ব্যবহার করে একটি তুলনা করা হয়েছে a
; যদি এটি শর্ট সার্কিট না করে &
এবং যেমন |
না করে তবে এটি একটি ত্রুটি দেয়।
a
# Error: object 'a' not found
TRUE || a
# [1] TRUE
FALSE && a
# [1] FALSE
TRUE | a
# Error: object 'a' not found
FALSE & a
# Error: object 'a' not found
অবশেষে, "এবং এবং এন্ড" শীর্ষক দ্য আর ইনফার্নোতে 8.2.17 বিভাগটি দেখুন ।