[r] `[` सबसेट 'से बेहतर क्यों है?


Answers

इसके अलावा [ तेज है:

require(microbenchmark)        
microbenchmark(subset(airquality, Month == 8 & Temp > 90),airquality[airquality$Month == 8 & airquality$Temp > 90,])
    Unit: microseconds
                                                           expr     min       lq   median       uq     max neval
                     subset(airquality, Month == 8 & Temp > 90) 301.994 312.1565 317.3600 349.4170 500.903   100
     airquality[airquality$Month == 8 & airquality$Temp > 90, ] 234.807 239.3125 244.2715 271.7885 340.058   100
Question

जब मुझे डेटा.फ्रेम फ़िल्टर करने की आवश्यकता होती है, यानी, कुछ स्थितियों को पूरा करने वाली पंक्तियों को निकालने के लिए, मैं subset फ़ंक्शन का उपयोग करना पसंद करता हूं:

subset(airquality, Month == 8 & Temp > 90)

[ समारोह के बजाय:

airquality[airquality$Month == 8 & airquality$Temp > 90, ]

मेरी प्राथमिकता के दो मुख्य कारण हैं:

  1. मुझे लगता है कि कोड बाएं से दाएं, बेहतर पढ़ता है। यहां तक ​​कि जो लोग आर के बारे में कुछ भी नहीं जानते हैं, वे बता सकते हैं कि ऊपर subset स्टेटमेंट क्या कर रहा है।

  2. चूंकि कॉलम को select अभिव्यक्ति में चर के रूप में संदर्भित किया जा सकता है, इसलिए मैं कुछ कीस्ट्रोक सहेज सकता हूं। उपरोक्त मेरे उदाहरण में, मुझे केवल एक बार subset साथ airquality टाइप करना पड़ा, लेकिन तीन बार [

तो मैं हर जगह subset का उपयोग करके खुश रह रहा था क्योंकि यह छोटा है और बेहतर पढ़ता है, यहां तक ​​कि अपने साथी आर कोडर्स को अपनी सुंदरता की वकालत भी करता है। लेकिन कल मेरी दुनिया अलग हो गई। subset दस्तावेज पढ़ने के दौरान, मैं इस खंड को नोटिस करता हूं:

चेतावनी

यह एक सुविधाजनक कार्य है जिसका उद्देश्य इंटरैक्टिव रूप से उपयोग के लिए है। प्रोग्रामिंग के लिए मानक सबसेटिंग फ़ंक्शंस का उपयोग करना बेहतर होता है [, और विशेष रूप से तर्क सबसेट के गैर-मानक मूल्यांकन में अप्रत्याशित परिणाम हो सकते हैं।

क्या कोई लेखक को समझने में मदद कर सकता है?

सबसे पहले, " इंटरैक्टिव रूप से उपयोग के लिए " उनका क्या अर्थ है? मुझे पता है कि एक इंटरैक्टिव सत्र क्या है, बैच मोड में चलने वाली एक स्क्रिप्ट के विपरीत, लेकिन मुझे नहीं लगता कि इसे क्या अंतर करना चाहिए।

फिर, क्या आप कृपया " तर्क सबसेट के गैर मानक मूल्यांकन " की व्याख्या कर सकते हैं और यह खतरनाक क्यों है, शायद एक उदाहरण प्रदान करें?




Related