যখন আমাকে একটি ডেটা.ফ্রেম ফিল্টার করা দরকার, অর্থাত্, নির্দিষ্ট শর্তগুলি পূরণ করে এমন সারিগুলি বের করুন, আমি subsetফাংশনটি ব্যবহার করতে পছন্দ করি :
subset(airquality, Month == 8 & Temp > 90)
পরিবর্তে [ফাংশন:
airquality[airquality$Month == 8 & airquality$Temp > 90, ]
আমার পছন্দের জন্য দুটি প্রধান কারণ রয়েছে:
আমি কোডটি বাম থেকে ডানে আরও ভাল পঠন করি। এমনকি যে লোকেরা আর সম্পর্কে কিছুই জানে না তারা
subsetউপরের বিবৃতিটি কী করছে তা বলতে পারে ।যেহেতু কলামগুলি
selectএক্সপ্রেশনটিতে পরিবর্তনশীল হিসাবে উল্লেখ করা যেতে পারে , আমি কয়েকটি কীস্ট্রোক সংরক্ষণ করতে পারি। উপরের আমার উদাহরণে, আমাকে কেবলairqualityএকবার দিয়ে টাইপ করতে হয়েছিলsubset, তবে তিনবার দিয়ে[।
সুতরাং আমি সুখী ছিলাম, subsetসর্বত্র ব্যবহার করেছিলাম কারণ এটি কম এবং আরও ভাল পড়া যায়, এমনকি এটি আমার সহকর্মী আর কোডারদের কাছে এর সৌন্দর্যের পক্ষেও। তবে গতকাল আমার সংসার ভেঙে গেছে। subsetডকুমেন্টেশন পড়ার সময় , আমি এই বিভাগটি লক্ষ্য করছি:
সতর্কতা
এটি ইন্টারেক্টিভভাবে ব্যবহারের উদ্দেশ্যে উদ্দেশ্যে করা একটি সুবিধাজনক ফাংশন। প্রোগ্রামিংয়ের জন্য [যেমন স্ট্যান্ডার্ড সাবসেটিং ফাংশনগুলি ব্যবহার করা ভাল, এবং বিশেষত যুক্তি উপসেটটির মানহীন মূল্যায়নের অপ্রত্যাশিত পরিণতি হতে পারে।
লেখকরা কী বোঝাতে চেয়েছেন তা বোঝাতে কেউ সাহায্য করতে পারে?
প্রথমত, ইন্টারেক্টিভভাবে ব্যবহারের জন্য "তারা কী বোঝায় ? ব্যাচ মোডে চালিত স্ক্রিপ্টের বিপরীতে আমি ইন্টারেক্টিভ সেশনটি কী তা জানি তবে এটির কী পার্থক্য হওয়া উচিত তা আমি দেখতে পাচ্ছি না।
তাহলে, আপনি দয়া করে " যুক্তি উপসেটটির মানহীন মূল্যায়ন " ব্যাখ্যা করতে পারেন এবং কেন এটি বিপজ্জনক, সম্ভবত একটি উদাহরণ সরবরাহ করতে পারেন?
dplyr::filterক্ষেত্রেও একই সমস্যা রয়েছে। উদাহরণস্বরূপ, যদি সেই পরিবেশটির সাথে সেই নামের সাথে কোনও ভেরিয়েবল হয়, তবে এটি ডেটা ফ্রেমের পরিবর্তকের পরিবর্তে এটি ব্যবহার করবে। বিভ্রান্তিকর ডিবাগিংয়ের জন্য তৈরি করে!
with(airquality, airquality[Month == 8 & Temp > 90, ])