आर

2012-09-13 5 views
12

से .NET/C# को कॉल करना मैं आर से एक एपीआई का उपयोग करना चाहता हूं जो केवल .NET में उपलब्ध है। क्या कोई मानक विधि है जिसका उपयोग आर से .NET C# कोड को कॉल करने के लिए किया जा सकता है? यदि हां, तो मैं ऐसा कैसे कर सकता हूं?आर

उत्तर

13

एक अन्य विकल्प है कि इस चर्चा पर विचार हो सकता के पाठकों rClr package, जो मैं आर यह से मनमाने ढंग से नेट कोड का उपयोग करने के कुछ साल के लिए पर काम कर रहा है है R.NET का एक भाई जो, इसके विपरीत, एक रास्ता है है .NET से आर तक पहुंचने के लिए।

library(rClr) 
clrLoadAssembly('c:/path/to/myassembly.dll') 
myObj <- clrNew('MyNamespace.MyClass,MyAssemblyName') 
clrCall(myObj, 'SayHelloWorld') 

प्रतिक्रिया और सुझावों वेब साइट के माध्यम से स्वागत करते हैं:

rClr पैकेज का स्वाद देने के लिए, विहित "नमस्ते दुनिया" की तरह लग रहा है।

+2

वाह - इसे डाउनलोड करें और यह बिल्कुल पूरी तरह से काम किया !! यह पैकेज बस आश्चर्यजनक है, मैं भविष्य में इसे बहुत उपयोग करने के लिए तत्पर हूं। अच्छा काम करते रहें! – Contango

+0

क्या किसी के पास उपरोक्त कोड का एक साधारण विशिष्ट उदाहरण है? – Artiga

+0

'लाइब्रेरी (आरसीएलआर) clrLoadAssembly ('सी: \\ __ \\ TstingRLib \\ क्लास लाइब्रेरी 1 \\ बिन \\ रिलीज \\ ClassLibrary1.dll') yObj <- clrNew ('System.System.Text, System') टाइप नहीं मिला: System.System.Text, सिस्टम clrNew में त्रुटि ("System.System.Text, System"): टाइप: सिस्टम। ऑर्ग्यूमेंट एक्सेप्शन संदेश: स्ट्रिंग 'सिस्टम से सिस्टम का चयन नहीं कर सका। सिस्टम, सिस्टम ' विधि: सिस्टम। ऑब्जेक्ट CreateInstance (System.String, System.Object []) स्टैक ट्रेस: ​​ Rclr.ClrFacade.CreateInstance (स्ट्रिंग टाइपनाम, ऑब्जेक्ट [] तर्क) ___ \ AppData \ Local \ Temp \ Rtmp2D63Nz में \ R.INSTALL1f3c2a50350 \ rClr \ src \ ClrFacade \ ClrFacade.cs: पंक्ति 316' – Artiga

3

.NET dll को COM dll के रूप में एक्सपोज़ करना और उसके बाद आर से डीएल में COM ऑब्जेक्ट को कॉल करना एकमात्र तरीका प्रतीत होता है। और इसके लिए एक पैकेज है: http://cran.r-project.org/web/packages/rcom/rcom.pdf

यदि आप COM dll नहीं बना सकते हैं क्योंकि यह तृतीय-पक्ष डीएल है, तो आप हमेशा एक नया इंटरफ़ेस बना सकते हैं जैसे COM इंटरफ़ेस के साथ .NET dll जहां आप वास्तविक डीएल कॉल कर सकते हैं।

+1

सिस्टम में प्रोगिड्स की एक सूची प्राप्त करने के लिए, http://procbits.com/2010/11/08/get-all-progid-on-system-for-com-automation/ – Contango