2012-12-31 16 views
54

क्या मेरे R स्क्रिप्ट को स्टैंडअलोन .exe फ़ाइल में संकलित करने का कोई आसान तरीका है जैसे मैटलैब करता है?स्टैंडअलोन .exe फ़ाइल में आर स्क्रिप्ट संकलित करें?

+8

बहुत छोटा जवाब: नहीं। कभी नहीं किया गया है। –

+1

असल में मैं इसे परेशान करना चाहता हूं लेकिन स्क्रिप्ट और एल्गोरिदम गुप्त रखना, क्या इस उद्देश्य को प्राप्त करने के लिए उस या किसी अन्य तरीके को एन्क्रिप्ट करने का कोई तरीका है? – Joyce

+2

कोड को छिपाने के लिए http://stackoverflow.com/questions/4707276/encrypting-r-script-under-ms-windows –

उत्तर

4

ठीक है आपको तैनाती मशीन पर आर की आवश्यकता होगी। निष्पादन योग्य बनाने के लिए, मुझे यकीन नहीं है कि यह संभव है। लेकिन आप एक और प्रोग्राम बना सकते हैं जो आपकी आर स्क्रिप्ट को आमंत्रित करता है। आर एक व्याख्या की गई भाषा है। यह संभव नहीं है।

+1

क्या हमारे पास किसी भी आर कंपाइलर पर कोई खबर है? मैंने पायथन का उपयोग करना शुरू किया और एक्सई फाइलें बनाने के लिए आसान तरीके हैं (उदाहरण के लिए py2exe और cx_freeze)। क्या जल्द ही आर में ऐसा कुछ देखने का कोई मौका है? – Tony

8

अपनी टिप्पणी के जवाब में:

असल में मैं इसे लेकिन स्क्रिप्ट और एल्गोरिथ्म गुप्त रखने distribe चाहते हैं, तो उस एन्क्रिप्ट करने के लिए एक तरह से या को किसी अन्य तरीके से इस उद्देश्य को प्राप्त है?

आप save() का उपयोग करके कार्यों को सहेजकर ऐसा कर सकते हैं। उदाहरण के लिए, यहाँ एक समारोह f() आप गुप्त रखना चाहते है:

f <- function(x, y) { 
    return(x + y) 
} 

यह सहेजें जहाँ भी:

save(f, file = 'C:\\Users\\Joyce\\Documents\\R\\Secret.rda') 

और जब आप समारोह का उपयोग करना चाहते:

load("C:\\Users\\Joyce\\Documents\\R\\Secret.rda") 

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

यह समाधान हालांकि महान नहीं है। फ़ंक्शन का नाम टाइप करके आप अभी भी आर में फ़ंक्शन देख सकते हैं, इसलिए यह उस अर्थ में छिपा हुआ नहीं है। लेकिन अगर आप .rda फ़ाइलों को खोलते हैं तो उनकी सामग्री सभी खराब हो जाती है। यह सब वास्तव में इस बात पर निर्भर करता है कि आपके कोड के प्राप्तकर्ता आर

+0

सुझाव के लिए धन्यवाद, दूसरों को सीधे कोड देखने से रोकने के लिए एक तरीका हो सकता है, धन्यवाद। – Joyce

+1

पूरे वर्कस्पेस को छवि के रूप में सहेजने के बारे में कैसे? –

4

एन्क्रिप्टेड कोड रखने का एक रूप TeachingDemos पैकेज में petals फ़ंक्शन में कार्यान्वित किया गया है।

ध्यान दें कि यह छिपे हुए कोड को खोजने के लिए केवल मध्यवर्ती स्तर के प्रोग्रामिंग कौशल लेगा, हालांकि यह जानबूझकर प्रयास करता है और उपयोगकर्ता दुर्घटना से कोड को देखने का दावा नहीं कर पाएगा। इसके बाद आपको किसी भी प्रकार के आकर्षक समझौते को लागू करने के लिए किसी प्रकार के लाइसेंस समझौते की आवश्यकता नहीं होगी।

+0

धन्यवाद ग्रेग, मैं बस आपके द्वारा उल्लेखित फ़ंक्शन को देखता हूं, लेकिन यह पता नहीं लगा सकता कि कोड को छिपाने के लिए इसका उपयोग कैसे किया जाए, क्या आप कृपया अधिक विस्तार से बताएंगे? बहुत धन्यवाद। – Joyce

+0

@ जॉयस, 'पंखुड़ियों' फ़ंक्शन कोड को छिपाता नहीं है, यह कोड का एक महत्वपूर्ण टुकड़ा छिपाने का एक उदाहरण है (क्या आप मुख्य टुकड़ा पढ़ सकते हैं?)। एन्क्रिप्टिंग (ब्लीचिंग) करने के लिए अन्य टूल्स की आवश्यकता है। एक आसान दृष्टिकोण पर चर्चा की जाती है: https://stat.ethz.ch/pipermail/r-devel/2011- अक्टूबर 06636.html। बाइट संकलन भी मदद कर सकता है, लेकिन आपको वास्तव में कुछ प्रकार के लाइसेंस समझौते की आवश्यकता है। –

21

तथ्य के रूप में समाधान प्राप्त करने का एक तरीका है जो आपकी आवश्यकताओं को पूरा करेगा। आर-ब्लॉगर्स पर Desktop Apps with R पर तैनाती पर आलेख देखें। जैसा कि लेख में विस्तृत है, आप एक exe फ़ाइल की तुलना में कुछ और चीजों का उपयोग कर समाप्त हो जाएगा।

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

आपके प्रश्न में आपने पूछा कि यह आसान है जो एक स्टैंडअलोन निष्पादन योग्य फ़ाइल को आर कोड व्याख्या करने के लिए विकसित करता है। मैं नहीं कहूंगा कि यह आसान है। यदि आपके पास किसी एप्लिकेशन से आर कोड चलाने की मजबूत इच्छा है, तो आप जावा के लिए RCaller या R.NET का उपयोग करके इसे सरल तरीके से कर सकते हैं।

+1

आर के साथ डेस्कटॉप ऐप्स को प्रदर्शित करने पर लिंक किया गया आलेख वास्तव में अच्छा है (पोर्टेबल ऐप्स और चमकदार का उपयोग करता है!), Thx! –

+2

@RYoda मुझे इसे पढ़ने में खुशी है। इस विषय में रुचि है। यदि आप चमकदार के साथ रहना चाहते हैं, [यह आलेख] (http://blog.analytixware.com/2014/03/packaging-your-shiny-app-as-windows.html) एक चमकदार ऐप पैकेजिंग पर दिलचस्प सलाह प्रदान करता है एक विंडोज डेस्कटॉप ऐप। – Konrad

+0

पूरे javax.script API में RCaller स्क्रिप्टिंग इंजन का उपयोग करना भी संभव है, http://mhsatman.com/rcaller-3-0 देखें – jbytecode

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