2011-03-02 10 views
28

जब मैं स्क्रिप्ट कॉन्फ़िगर करना शुरू करता हूं तो मुझे नुकसान होता है। मुझे यकीन नहीं है कि आर पैकेज बनाने के बारे में कैसे जाना है जिसमें सी/सी ++ से बनाए गए कई फ़ंक्शन हैं, यह विंडोज & लिनक्स के बीच पोर्टेबल है। मौजूदा पैकेजों की गड़बड़ी को संशोधित करने के मेरे प्रयास निष्फल रहे हैं।सी ++ स्रोत कोड के साथ आर पैकेज बनाने पर एक अच्छा ट्यूटोरियल कहां है?

किसी भी मदद या लिंक की सराहना की जाएगी।

अद्यतन: मैं के खिलाफ लिंक करना चाहते हैं तो संभव:, Boost CUDA, & hwloc

हालांकि, मुझे लगता है कि बूस्ट हो जाएगा एक बुरा सपना & hwloc ज्यादा बेहतर नहीं होगा । तो मैं सिर्फ CUDA के लिए बसना होगा। यही कारण है कि मैंने गहरे अंत में कबूतर किया और मेरी जरूरतों के अनुरूप कुछ मौजूदा पैकेजों को संशोधित करने की कोशिश की (आरजीएल & rglpk)। लेकिन मैं निर्भरताओं के बिना शुरू करने और जमीन से निर्माण करने के लिए तैयार हूं। आपके सुझावों के लिए सभी को धन्यवाद !!

+1

यह उपयोगी होगा अगर आप हमें बता सकें कि आपके आर इंस्टॉलेशन के साथ आने वाले मैनुअल के बारे में अपर्याप्त क्या है। –

+2

मैंने "लेखन आर एक्सटेंशन" पढ़ा है। मैं धारा 1.2 में बहुत जल्दी खो गया है। मेरे सी ++ कोड में मेकफ़ाइल है, लेकिन यह पोर्टेबल नहीं है। इसलिए मैं Makevars.in का उपयोग करना चाहता हूं और कार्यक्षमता को कॉन्फ़िगर करना चाहता हूं, लेकिन मुझे यकीन नहीं है कि आगे कैसे बढ़ना है। क्या दो सी ++ स्रोत फ़ाइलों, तीन हेडर फाइलों और आर-कोड के साथ कहीं आसानी से समझने योग्य उदाहरण है जो सभी आर पैकेज में लपेटा गया है? –

+0

आमतौर पर एक कॉन्फ़िगरेशन स्क्रिप्ट केवल तभी जरूरी है जब आप आर द्वारा प्रदान की गई बाहरी लाइब्रेरी के खिलाफ लिंक कर रहे हों। यदि आप ऐसा कर रहे हैं, तो यह जानना उपयोगी होगा कि आप कौन सी बाहरी पुस्तकालयों का उपयोग करने का प्रयास कर रहे हैं। – Sharpie

उत्तर

22

संकलित कोड के साथ अपना पहला पैकेज लिखते समय भी मैं काफी खो गया था। यहां कुछ युक्तियां दी गई हैं, लेकिन वहां शायद बेहतर सामग्री है।

आर पैकेज लिखने का मुख्य भाग "लेखन आर एक्सटेंशन" है। यह एक बहुत ही पूरा गाइड है, लेकिन वह भी इसके माध्यम से पढ़ने के लिए कठिन abit बनाता है: http://cran.r-project.org/doc/manuals/R-exts.pdf

यहाँ है एक छोटे से ट्यूटोरियल मैं गूगल एक बार जो मैंने पहली बार इस्तेमाल किया, कैसे सी कोड का उपयोग करने वाले पर पाया: http://www.stat.columbia.edu/~gelman/stuff_for_blog/AlanRPackageTutorial.pdf

एक और सी कोड के साथ सामान्य रूप में आर पैकेज पर गाइड, लेकिन नहीं: http://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf

Rcpp सी ++ कोड के लिए एक बहुत ही उपयोगी पैकेज है, लेकिन मैं इसे एक बहुत अभी तक उपयोग नहीं किया है (3 दिन वास्तव में)। इसमें पैकेज में बहुत सारे दस्तावेज हैं।

+0

यह भी सहायक रहा है: http://www.biostat.jhsph.edu/~rpeng/docs/interface.pdf – MichaelChirico

15

मेरा डिफ़ॉल्ट दृष्टिकोण यह जानने के लिए है कि दूसरों ने समस्या का समाधान कैसे किया है। 2800+ सीआरएएन पैकेज हैं, और कई एक दशक से अधिक समय से वहां रहे हैं। समस्या हल करने योग्य है, और हल हो गया है।

अब, यह भी सच है कि दस्तावेज वहां है, लेकिन शायद बहुत बिखरा हुआ है। इसके अलावा, लक्ष्य शिफ्ट। उदाहरण के लिए, साल पहले, हमने अभी भी src/Makefile का उपयोग किया था, इन दिनों के खिलाफ बहुआयामी निर्माण (ओएस एक्स, विंडोज़ पर, और एक दिन भी लिनक्स पर) की आवश्यकता के कारण बहुत अधिक अनुशंसा की जाती है।

तो इसे सरल रखने में मदद करने में मदद मिलती है। वास्तव में आप एक वैध सी ++ परियोजना ... कुछ भी बिना कर सकते हैं। बस अपने पैकेज फू के src/ में स्रोत फ़ाइलों को छोड़ दें, और आर प्लेटफार्म के आधार पर libfoo.so या libfoo.dylib या 012 बनाने के बारे में जानेंगे। और यदि आपको अन्य शीर्षलेख फ़ाइलों की आवश्यकता है, तो src/Makevars का उपयोग करने का प्रयास करें। बाहरी निर्भरताओं के लिए यह ट्रिकियर हो जाता है और एक को autoconf एट अल सीखना है, लेकिन कई पैकेज कुछ सरल के साथ स्केट करते हैं।

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

संपादित करें: और मामले में आप Rcpp पैकेज (जो आर और सी ++ एकीकरण में सहायता) के साथ इस चाहते हैं, तो वहाँ है एक entire vignette about to do this in your own package

संपादित करें 2: अब आपके प्रश्न का विस्तार हुआ, CUDA एक पूरी तरह से अलग जानवर है। यह अधिक कठिन है क्योंकि आप विभिन्न कंपाइलर्स आदि पीपी मिश्रण करते हैं। सीआरएएन पर दो उदाहरण पैकेज हैं, उनको अध्ययन करें।

+0

यदि मैं सी कार्यों के साथ अपना सी ++ कोड लपेटना चाहता हूं, तो मुझे उपयोग करने की आवश्यकता नहीं होगी आरसीपीपी मैं करूँगा? –

+0

नहीं, लेकिन आरसीपीपी बाधा के बजाए मदद करने के लिए यहां है। हम में से कई लोगों को लगता है कि यह आपको चीजों को आसान बनाता है * आपको दोहराव वाले रैपर लिखने से मुक्त करता है *। कुछ उदाहरण देखें, आप इसे पसंद कर सकते हैं। लेकिन दोहराने के लिए: यदि आपकी परियोजना सरल है, तो आपको * src * makevars' की आवश्यकता नहीं है, और आपको * आरसीपीपी का उपयोग नहीं करना है। लेकिन हम में से कुछ सोचते हैं कि यह मदद करता है :) –

+0

अंतर्दृष्टि के लिए बहुत बहुत धन्यवाद! मैं इसे देख लूँगा। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^