R और जूलिया को जोड़ना?


135

जूलिया तेज और वाक्य-रचना संगणना (जैसे यहां ) के लिए बहुत आशाजनक लग रहा है, लेकिन मुझे संदेह है कि यह कुछ समय के लिए समग्र आँकड़े वर्कफ़्लो के संदर्भ में आर के पास कहीं भी नहीं होगा। इसलिए मैं इसका उपयोग करना चाहता हूं जहां C ++ मुख्य रूप से R कार्यक्रमों में उपयोग किया जाता है: कोड के धीमे भागों को अनुकूलित करने के लिए। इससे पहले कि मैं जूलिया को सीखने में समय लगाऊं, हालांकि, मैं उत्सुक हूं कि आर कोड में जूलिया स्निपेट्स को एम्बेड करने के लिए क्या सुविधाएं हैं।

इसलिए:

  • आर और जूलिया को जोड़ने के लिए क्या सुविधाएं हैं?
  • शून्य से Rcpp के पैमाने पर वे कितने मजबूत और सुविचारित हैं?

मैं आर से जूलिया को कॉल करना चाहता हूं, जैसे आरसीपी आर के भीतर से अभी C ++ को कॉल करने की अनुमति देता है। मुझे जूलिया से आर नहीं बुलाना है। (इसलिए RCall.jl नहीं चलेगा)


7
मेरा अनुमान है कि आप बहुत जल्दी अपनाने वाले होंगे और उन दंड के अधीन होंगे। मुझे गलत होने में खुशी होगी - मुझे भी खुशी होगी कि आप काम करते हैं और हमारे लिए माध्यम अपनाने का मार्ग प्रशस्त करते हैं ...
बेन बोल्कर

15
प्रदर्शन बेंचमार्क में उपयोग किए जाने वाले कार्य R: github.com/JuliaLang/julia/blob/master/test/perf/perf.R का उपयोग करने के लिए एक बहुत ही असामान्य तरीके की तरह प्रतीत होते हैं । यह लगभग फेरारी में डीजल डालने जैसा है ...
जेम्स

2
प्रश्न प्रासंगिक है। जूलिया के लिए AC ABI उभरती हुई दिख रही है। एक मौका है कि मैं जल्द ही एक जूलिया-टू-आर इंटरफ़ेस बनाने में एक छुरा हूँ।
लैगुटियर

4
मेरे पास एक जूलिया-टू-आर ब्रिज मोटे तौर पर काम कर रहा है ( github.com/lgautier/Rif.jl )। दूसरे रास्ते पर जाना जूलिया अंत पर काम-अभी-प्रगति पर निर्भर करता है।
लगुटियर

3
@ लेगुटियर मुझे पूरी उम्मीद है कि आप अपना काम फिर से शुरू करेंगे। नरक, अगर इस का समर्थन करने के लिए एक किकस्टार्टर पेज था, तो मुझे यकीन है कि वहाँ होगा।
मैक्सिम.क

जवाबों:


42

RJulia आर पैकेज काफी अच्छा अब से आर लग रहा है R CMD check(यदि चेतावनी या त्रुटियों के बिना चलाता है juliaठीक से स्थापित है)।

मेरे विचार में सबसे बड़ी TODO जूलिया को उन सूचियों को वापस लाने के लिए है जो आर में वास्तव में बुनियादी लचीले सामान्य डेटा संरचना का गठन करते हैं।

ध्यान दें कि डौग बेट्स ने मुझे आरसीएल के बारे में जूलिया से आर (यानी, आर से जूलिया के अलावा दूसरी दिशा) के लिए एक द्वि-दिशात्मक इंटरफ़ेस के बारे में सचेत किया । इसके अलावा, डौग ने जूलिया के वर्तमान स्थिर संस्करणों के बजाय जूलिया 0.4.0 को लक्षित करने की सिफारिश की।


57

मैं भी जूलिया को तब से देख रहा हूं जब से डौग बेट्स ने मुझे जनवरी में हेड-अप भेजा था । लेकिन @ gsk3 की तरह, मैं इसे "Rcpp स्केल" पर मापता हूं क्योंकि मैं जूलिया को रिच आर ऑब्जेक्ट्स देना चाहता हूं। और यह अभी बिल्कुल भी समर्थित नहीं लगता है।

जूलिया एक अच्छा और सरल सी इंटरफ़ेस है। ताकि हमें कुछ ऐसा मिले .C()। लेकिन जैसा कि हाल ही में आर- डेवेल पर चर्चा की गई है, आप वास्तव में नहीं चाहते हैं .C(), ज्यादातर मामलों में आप .Call()वास्तविक आर ऑब्जेक्ट्स का प्रतिनिधित्व करने वाले वास्तविक एसईएक्सपी चर पास करने के लिए चाहते हैं। इसलिए अभी मुझे इस सीमा के कारण आर से जूलिया के लिए बहुत कम गुंजाइश दिखाई देती है।

हो सकता है कि अप्रत्यक्ष इंटरफ़ेस tcp / ip से Rerve का उपयोग करने से पहले शुरू हो सकता है इससे पहले कि जूलिया थोड़ा परिपक्व हो जाए और हमें एक उचित C ++ इंटरफ़ेस मिल जाए। या हम Rcpp के आधार पर R से C ++ प्राप्त करने के लिए कुछ का उपयोग करते हैं इससे पहले कि हम एक मध्यवर्ती परत में प्रवेश करते हैं [जिसे किसी को लिखना होगा] जिसमें से हम जूलिया को डेटा फीड करते हैं, ठीक उसी तरह जैसे वास्तविक R API केवल एक C परत प्रदान करता है। पता नहीं।

और दिन के अंत में, कुछ धैर्य की आवश्यकता हो सकती है। मैंने 1996 या 1997 के आसपास आर को देखना शुरू किया, जब फ्रिट्ज लेइक ने comp.os.linux.announce न्यूज़ग्रुप पर पहली घोषणा की। और आर के पास तब सीमित सुविधाएं थीं (लेकिन एस भाषा का पूर्ण वादा, निश्चित रूप से, सी हमें पता था कि हमारे पास एक विजेता था)। और कुछ साल बाद मैं इसे अपनी प्राथमिक मॉडलिंग भाषा बनाने के लिए तैयार था। उस समय CRAN के पास अभी भी 100 से कम पैकेज थे ...

जूलिया अच्छी तरह से वहाँ पहुँच सकती है। लेकिन अभी के लिए मुझे संदेह है कि हम में से कई आर में काम करेंगे, और जूलिया में बस कुछ जिज्ञासु झलकेंगे।


1
चूंकि मेरी जानकारी में जूलिया के लिए कोई स्थिर योजना बनाने की योजना नहीं है, इसलिए C ++ में एम्बेड करने की अनुमति देने के लिए हमें कुछ समय इंतजार करना पड़ सकता है
pyCthon

48

जूलिया विकास योजना, जैसा कि मैंने इस उत्तर में वर्णित है , जूलिया कोड को साझा पुस्तकालयों के संकलन के लिए अनुमति देने के लिए है, सी एबीआई का उपयोग करके कॉल करने योग्य है। एक बार ऐसा हो जाने के बाद, आर से जूलिया कोड को कॉल करना उतना ही आसान हो जाएगा, जितना कि सी / सी ++ कोड को कॉल करना है। हालाँकि, यह संभव होने से पहले उचित मात्रा में काम आवश्यक है।


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

8
क्या आपने इसे लिखने के बाद यह स्थिति बदली है? (पीएस मैं जूलिया से प्यार कर रहा हूं , उस पर आपके काम के लिए धन्यवाद!)
एंडी हेडन

23

एक त्वरित अद्यतन। चूंकि यह सवाल पूछा गया था, एक जूलिया पैकेज की शुरुआत हुई है जो जूलिया के भीतर से आर कार्यक्रमों को कॉल करने की अनुमति देता है।

यहाँ और अधिक: https://github.com/lgautier/Rif.jl


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

5
+1 क्योंकि जूलिया जैसे संकीर्ण विषय में हर जानकारी काफी जानकारीपूर्ण है
Qbik

जैसा कि @ AriB.Friedman ने कहा, यह कोई नई जानकारी नहीं है - और हम सभी आर से जूलिया को बुलाना चाहते हैं, अन्य तरीके से नहीं।
मार्टिन मचलर

13

क्या किसी ने इस परियोजना को देखा है?

https://github.com/armgong/RJulia

बहुत नया है लेकिन लगता है कि वास्तव में क्या अनुरोध किया जा रहा है!


4
संकेत के लिए धन्यवाद। वास्तव में यह समाधान होगा यदि यह काम करता है। मैंने स्थापित करने की कोशिश की (बहुत वर्तमान आर 3.1.2 पैच का उपयोग करके) और जूलिया (0.4.0-देव .. दिसंबर, 2014 को ubuntu पैकेज के रूप में अपडेट किया गया)। फिर संकलन विफल हो गया और मैंने github अंक github.com/armgong/RJulia/issues/10 खोला। चलिए आशा करते हैं कि हम और आगे
बढ़ेंगे

1
कोई प्रगति? मुझे उनके गितुब रेपो से काफी सक्रिय विकास सूचनाएं मिलती हैं, इसलिए मैं सोचता हूं कि मुद्दों को सुलझाया जाएगा ...
एडम

2
वास्तव में! यहाँ का पालन नहीं किया - लेकिन उपरोक्त मुद्दों पृष्ठ पर: प्रमुख समस्याओं को हटा दिया गया था। मैंने स्वेच्छा से उपयोगी (मदद के लिए) पन्नों को छोड़कर, पैकेज को विश्वसनीय (CRAN) होने के करीब लाने के लिए स्वेच्छा से काम किया था। लेकिन दुर्भाग्य से, मैं अन्य व्यस्त मामलों में बहुत गहरा हूं, इसलिए इसे अभी (मेरे लिए) इंतजार करना होगा।
मार्टिन मचलर

11

मैं JuliaCallहाल ही में एक आर पैकेज बनाता हूं , जो जूलिया को आर में एम्बेड करता है। पैकेज सीआरएएन पर है।

https://cran.r-project.org/web/packages/JuliaCall/index.html

https://github.com/Non-Contradiction/JuliaCall

पैकेज का उपयोग इस प्रकार है:

library(JuliaCall)
julia <- julia_setup()
julia_command("a = sqrt(2)"); julia_eval("a")
julia_eval("sqrt(2)")
julia_call("sqrt", 2)
julia_eval("sqrt")(2)

जैसा कि आप देख सकते हैं, आप कमांड स्ट्रिंग्स भेज सकते हैं और जूलिया फ़ंक्शन को वास्तव में आसानी से कॉल कर सकते हैं।

और जूलिया पैकेज का उपयोग करने वाले कुछ आर पैकेज भी हैं JuliaCall, उदाहरण के लिए,

  • convexjlr Convex.jl का उपयोग करते हुए R में अनुशासित उत्तल प्रोग्रामिंग के लिए, जो CRAN पर भी है।
  • ipoptjlr, जूलिया पैकेज का उपयोग करके इंटीरियर प्वाइंट ऑप्टिमाइज़र (IPOPT) के लिए एक आर इंटरफ़ेस Ipopt.jl

किसी भी प्रतिक्रिया के लिए आपका स्वागत है JuliaCall!!


7

वहाँ भी है XRJulia पैकेज से XR ई करने का लक्ष्य संकुल के परिवार एक्स जाते आर जॉन चैम्बर्स (आर के रचनाकारों में से एक) से। यह जूलिया और आर तब rJulia और इसी तरह के पैकेज के बीच डेटा स्थानांतरित करने के लिए थोड़ा अलग दृष्टिकोण (JSON) का उपयोग करता है।


5

तुम भी मेरे प्रयास की जाँच कर सकते हैं: JuliaConnectoRआर-पैकेज। पैकेज GitHub और CRAN से उपलब्ध है ।

यह लक्ष्य है कि जूलिया से सीधे आर में फ़ंक्शन आयात किया जाए ताकि उन्हें आर कोड में आर फ़ंक्शन की तरह उपयोग किया जा सके। जूलिया फ़ंक्शंस के रिटर्न वैल्यूज़ का अनुवाद R डेटा स्ट्रक्चर्स में किया जाता है, जिसका उपयोग R में किया जा सकता है और जूलिया को वापस भी भेजा जा सकता है। जूलिया और आर के एक और एकीकरण के लिए, कॉलबैक फ़ंक्शन के रूप में आर कार्यों को पारित करके जूलिया से आर तक वापस कॉल करना संभव है।

XRJulia के समान, JuliaConnectoR टीसीपी पर निर्भर करता है, लेकिन यह कार्यात्मक रूप से उन्मुख है और पाठ-आधारित JSON संदेशों के बजाय अनुकूलित कस्टम स्ट्रीमिंग प्रारूप का उपयोग करता है जैसा कि XRJulia करता है। टीसीपी द्वारा संचार करने का एक फायदा जूलिया और आर के विभिन्न संस्करणों के संबंध में स्थिरता है। आरसीएल और जूलियाकॉल जैसे सी इंटरफेस के स्तर पर एकीकरण के साथ बनाए रखना बहुत कठिन है।

पैकेज जूलिया and 1.0 और आर संस्करणों की एक विस्तृत श्रृंखला के साथ काम करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.