दिलचस्प पोस्ट
रूबी ब्लॉक में 'वापसी' का उपयोग करना एनजी-मॉडल का उपयोग करने की तारीख को कैसे प्रारूपित करें? एएसपी.नेट एमवीसी में आरएसएस फ़ीड PHP के लिए 500 आंतरिक सर्वर त्रुटि html के लिए नहीं RegExp के exec () फ़ंक्शन और स्ट्रिंग के मैच () फ़ंक्शन में क्या अंतर है? अंगुलम में प्रोग्राम घटक को कैसे जोड़ूं? डार्ट? 64-बिट विंडोज (पीआईपी के साथ) पर NumPy और SciPy अधिष्ठापन आर्किटेक्चर armv7 के लिए अनिर्धारित प्रतीकों सी ++ में स्ट्रिंग से गणित के भाव का मूल्यांकन करना एकल विधि के साथ कक्षा – सर्वोत्तम दृष्टिकोण? मौजूदा आईफोन प्रोजेक्ट को कोर डेटा जोड़ना अजगर: मेरी प्रतिलिपि चर में परिवर्तन मूल चर को प्रभावित करता है पायथन नेस्टेड फ़ंक्शंस में स्थानीय चर <System.web> और <system.webServer> के बीच अंतर क्या है? फ्लास्क अनुरोध में प्राप्त आंकड़े कैसे प्राप्त करें

एक आर फ़ंक्शन में कई ऑब्जेक्ट्स रिटर्निंग

मैं आर फंक्शन में कई ऑब्जेक्ट कैसे लौटा सकता हूं? जावा में, मैं एक कक्षा बना सकता हूँ, शायद वह Person जिसके पास कुछ निजी वैरिएबल है और इनकैप्लेट करता है, शायद, height , age आदि।

लेकिन आर में, मुझे डेटा के समूह के चारों ओर से गुजरना होगा। उदाहरण के लिए, मैं एक आर फ़ंक्शन कैसे कर सकता हूं, जो कि वर्णों की एक सूची और एक पूर्णांक है?

वेब के समाधान से एकत्रित समाधान "एक आर फ़ंक्शन में कई ऑब्जेक्ट्स रिटर्निंग"

कई अन्य भाषाओं के विपरीत, आर फ़ंक्शंस कड़ी अर्थों में कई ऑब्जेक्ट्स वापस नहीं करती हैं। इसे संभालने का सबसे सामान्य तरीका एक list वस्तु वापस करना है। इसलिए यदि आपके पास एक पूर्णांक foo और आपके फ़ंक्शन में स्ट्रिंग bar का एक वेक्टर है, तो आप ऐसी सूची बना सकते हैं जो इन मदों को जोड़ती है:

 foo <- 12 bar <- c("a", "b", "e") newList <- list("integer" = foo, "names" = bar) 

फिर इस सूची को return करें

अपने फ़ंक्शन को कॉल करने के बाद, आप इनमें से प्रत्येक को newList$integer या newList$names साथ एक्सेस कर सकते हैं।

अन्य वस्तु प्रकार विभिन्न उद्देश्यों के लिए बेहतर काम कर सकते हैं, लेकिन list ऑब्जेक्ट शुरू करने का एक अच्छा तरीका है।

इसी प्रकार जावा में, आप आर में एक एस 4 क्लास बना सकते हैं जो आपकी जानकारी का उपयोग करता है:

 setClass(Class="Person", representation( height="numeric", age="numeric" ) ) 

तब आपका फ़ंक्शन इस क्लास का एक उदाहरण वापस कर सकता है:

 myFunction = function(age=28, height=176){ return(new("Person", age=age, height=height)) } 

और आप अपनी जानकारी का उपयोग कर सकते हैं:

 aPerson = myFunction() aPerson@age aPerson@height 

क्या आप इन पंक्तियों के साथ क्या देख रहे हैं?

 x1 = function(x){ mu = mean(x) l1 = list(s1=table(x),std=sd(x)) return(list(l1,mu)) } library(Ecdat) data(Fair) x1(Fair$age) 

आप सुपर असाइनमेंट भी उपयोग कर सकते हैं।

के बजाय "<-" प्रकार "<< -" फ़ंक्शन पुनरावर्ती और बार-बार उस नाम के किसी ऑब्जेक्ट के लिए एक कार्यात्मक स्तर की खोज करेगा। अगर यह एक नहीं मिल सकता है, तो यह एक वैश्विक स्तर पर बना देगा।

आप कई ऑब्जेक्ट बनाने के for() को assign() साथ इस्तेमाल कर सकते हैं। assign() से उदाहरण देखें:

 for(i in 1:6) { #-- Create objects 'r.1', 'r.2', ... 'r.6' -- nam <- paste("r", i, sep = ".") assign(nam, 1:i) 

नई वस्तुओं को देख रहे हैं

 ls(pattern = "^r..$") 

इसे संभालने का एक तरीका प्राथमिक को एक विशेषता के रूप में जानकारी देना है। मुझे तनाव होना चाहिए, मुझे सचमुच लगता है कि यह केवल तब करना सही बात है जब जानकारी के दो टुकड़े संबंधित हैं जैसे कि किसी के पास दूसरे के बारे में जानकारी है

उदाहरण के लिए, मैं कभी-कभी "महत्त्वपूर्ण चर" या चर के नाम को छिपाना करता हूं जो कि डेटा नामों पर एक विशेषता के रूप में चर नामों की सूची को संचित करके संशोधित किया गया है:

 attr(my.DF, 'Modified.Variables') <- DVs.For.Analysis$Names.of.Modified.Vars return(my.DF) 

यह मुझे डेटा फ्रेम के साथ चर नामों की एक सूची संग्रहीत करने की अनुमति देता है I