जब मैंने जावा का अध्ययन किया, तो मैंने देखा कि हम संदर्भ प्रकारों की तुलना करने के लिए == का उपयोग करने से बचते हैं क्योंकि == तुलना करता है कि क्या संदर्भ समान हैं, सामग्री नहीं। और हम केवल == का उपयोग आदिम प्रकारों के लिए करेंगे क्योंकि वे स्मृति में संग्रहीत किए जा रहे हैं।

मुझे रिलेशनल ऑपरेटर्स के लिए R प्रलेखन में एक समान नोट मिला:

परीक्षण के लिए == और != का उपयोग न करें, जैसे कि if एक्सप्रेशन, जहां आपको एक TRUE या FALSE प्राप्त करना होगा। जब तक आप पूरी तरह से सुनिश्चित न हों कि कुछ भी असामान्य नहीं हो सकता है, आपको इसके बजाय समान फ़ंक्शन का उपयोग करना चाहिए।

और इसके तुरंत बाद, मैंने पाया:

संख्यात्मक और जटिल मानों के लिए, याद रखें == और != भिन्नों के परिमित प्रतिनिधित्व की अनुमति न दें, न ही गोल त्रुटि के लिए। समान के साथ all.equal का उपयोग करना लगभग हमेशा बेहतर होता है।


मेरे विनम्र प्रश्न:

1. क्या हम R में आदिम प्रकारों के बारे में बात करते हैं? यदि ऐसा है, तो वो क्या हैं? और क्या हम हमेशा रिलेशनल ऑपरेटरों की तुलना करने के लिए सुरक्षित रूप से उपयोग कर सकते हैं? (इसके अलावा, रिलेशनल ऑपरेटरों का उपयोग करते समय हम किन परिस्थितियों में "बिल्कुल सुनिश्चित हो सकते हैं कि कुछ भी असामान्य नहीं हो सकता है"?)

2. मैंने कई बार == का उपयोग करते हुए स्ट्रिंग्स (वर्णों) की तुलना करते हुए R कोड देखे हैं, क्या वे R कोड हैं जिन्हें मैंने सिर्फ मैला देखा है या ऐसा इसलिए है क्योंकि वर्ण/स्ट्रिंग R में एक आदिम प्रकार है (या कुछ ऐसा जो हम हमेशा तुलना करने के लिए रिलेशनल ऑपरेटरों का उपयोग कर सकते हैं)?


[अपडेट]

नीचे दी गई टिप्पणियों के लिए धन्यवाद, मैंने महसूस किया कि उपरोक्त ऊपरी उद्धरण मुख्य रूप से आउटपुट की सटीकता के बजाय आर के संचालन की वेक्टरिंग सुविधा पर जोर देने की कोशिश कर रहा है, और (आधार) आर में संबंधपरक संचालन की वैधता की अत्यधिक संभावना नहीं है संदर्भ प्रकारों से संबंधित मुद्दों से प्रभावित हों।

आगे स्पष्टीकरण/स्पष्टीकरण के लिए किसी भी उत्तर या टिप्पणियों का हार्दिक स्वागत है।

r
7
J-A-S 31 अक्टूबर 2020, 13:42

1 उत्तर

सबसे बढ़िया उत्तर

संदर्भ या पॉइंटर्स का उपयोग आर में नहीं किया जाता है। इसलिए, आदिम प्रकारों और संदर्भ प्रकारों के बीच अंतर सार्थक नहीं है, और ज्ञात नुकसान, जैसे, जावा या सी ++ से इसकी सामग्री के बजाय संदर्भ पते की तुलना करना आर में नहीं होता है।

आर में तुलना के लिए == के उपयोग के बारे में चेतावनियां मुख्य रूप से परिमित सटीकता से संबंधित समस्याओं को संदर्भित करती हैं जो समानता के लिए फ़्लोटिंग-पॉइंट मानों की जांच करते समय उत्पन्न हो सकती हैं, जिससे प्रति सहज ज्ञान युक्त परिणाम। आर में == ऑपरेटर के उपयोग से जुड़ी अन्य संभावित गलतियाँ वैक्टर की तुलना (वैश्विक के बजाय) से संबंधित हैं, जैसा कि टिप्पणियों में उल्लेख किया गया था।

आर में निश्चित रूप से अलग-अलग "आदिम" प्रकार (डेटा प्रकार या "परमाणु" मोड कहा जाता है) हैं, जैसे संख्यात्मक, तार्किक, चरित्र और जटिल। लेकिन आमतौर पर एक चर के प्रकार को निर्दिष्ट करना भी आवश्यक नहीं है क्योंकि यह स्वचालित रूप से असाइनमेंट द्वारा काट लिया जाता है।

2
RHertel 1 नवम्बर 2020, 09:15