2015-04-26 11 views
6
में इंट बनाम अंक विसंगति

मैं आर प्रोग्रामिंग पर एक प्राइमर के माध्यम से अपने रास्ते काम कर रहा था और एक मामूली विसंगति देखा:आर: वेक्टर

  • x <- c(2,1,1,5) प्रकार num
  • y <- c(1:5) का एक वेक्टर का उत्पादन प्रकार का एक वेक्टर का उत्पादन int
  • z <- c(1.5,2.3) ऐसा क्यों होता है प्रकार num

का एक वेक्टर का उत्पादन ? R में मौलिक डेटा प्रकार क्या है: क्या यह int है या यह num है? क्या होता है यदि वेक्टर में से एक तत्व float है, तो वेक्टर का प्रकार float बन जाता है या यह कुछ और है? क्या होता है जब वेक्टर में सभी तत्व float हैं - यह अभी भी num क्यों है?

+3

सभी नंबर "डबल" ('टाइपोफ (2)') हैं जब तक अन्यथा निर्दिष्ट नहीं किया जाता है ('as.integer' या' L')। 'सी' एक ऐसा कार्य है जो आपके" एक्स "में" डबल "में उच्चतम 'टाइपोफ़' को जोड़ता है और जोड़ता है। ':' एक ऐसा फ़ंक्शन है जो डिज़ाइन द्वारा "पूर्णांक" वेक्टर देता है। साथ ही, "संख्यात्मक" भी एक वर्ग है और "पूर्णांक" और "डबल" के लिए 'TRUE' लौटाता है (देखें '? संख्यात्मक')। –

+3

सहायता फ़ाइल के ** वैल्यू ** सेक्शन ('?": "') से, 'संख्यात्मक तर्कों के लिए, एक संख्यात्मक वेक्टर। यह पूर्णांक प्रकार का होगा यदि पूर्णांक-मूल्यवान है और परिणाम आर पूर्णांक प्रकार में प्रदर्शित होता है, अन्यथा "डबल" (उर्फ मोड "न्यूमेरिक") टाइप करें। ' – nrussell

उत्तर

5

वहाँ खेल में दो अलग-अलग मुद्दे हैं:

  1. c(2, 1, 1, 5) में आप कर रहे हैं स्पष्टnumeric प्रकार के निर्माण। integer के लिए, आपको c(2L, 1L, 1L, 5L) का उपयोग करना होगा क्योंकि केवल प्रत्यय Linteger प्रकार (या as.integer() आदि के माध्यम से कास्टिंग) सुनिश्चित करता है। लेकिन पढ़ें ...

  2. c(1:5): के लिए एक ऐतिहासिक ओवरराइड खेल में आता है। क्योंकि उपयोग में लगभग पूर्णांक अनुक्रम शामिल होते हैं, यह वही है जो आपको मिलता है: पूर्णांक।

दोनों रूपों लिखित हैं, तो यह एक विसंगति नहीं है के रूप में अपने प्रश्न का शीर्षक निकलता है।

+0

हाय, @DirkEddelbuettel, आमतौर पर 'पायथन' 'आदि' एल' 'int: type long' के लिए आरक्षित है, यह क्यों है कि 'आर' टाइप-कास्टिंग के लिए' int' के लिए 'एल' का उपयोग करता है। इसके अलावा, आपके अनुसार अभ्यास में कौन सी विधि को प्राथमिकता दी जानी चाहिए - 'सी()' या 'सी (:)'? धन्यवाद एक टन :) – pranav

+4

पायथन अभ्यास यहां अप्रासंगिक है। उदाहरण के लिए [आर भाषा परिभाषा मैनुअल] (http://cran.r-project.org/doc/manuals/r-release/R-lang.html) पर एक नज़र डालें। इसके अलावा, आर में केवल 'पूर्णांक' है और पूर्णांक के विभिन्न आकारों (यानी कोई 'लंबा int' या 'लंबा लंबा int') के बीच कोई अंतर नहीं है। –

+0

धन्यवाद @ डर्क एडेलबुटेल, मुझे मिल गया, यह सोच रहा था कि क्यों 'आर' पाइथन, सी/सी ++, जावा इत्यादि जैसी अन्य भाषाओं की तुलना में 'एल' का उपयोग करने में एक अलग अभ्यास का पालन करता है। धन्यवाद :) – pranav