2012-09-13 15 views
12

Chciałbym użyć API z R, który jest dostępny tylko w .NET. Czy istnieje standardowa metoda, która może być używana do wywoływania kodu .NET C# z R? Jeśli tak, jak mogę to zrobić?Wywołanie .NET/C# z R

Odpowiedz

13

Inna opcja, że ​​czytelnicy tej dyskusji może rozważenia jest rClr package, które pracują na na kilka lat, aby uzyskać dostęp do dowolnego kodu .NET z R. Jest to rodzeństwo R.NET które, przeciwnie, jest sposobem uzyskać dostęp do R z .NET.

Aby nadać smak pakietu rClr, kanoniczna „Hello World” wygląda następująco:

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

opinie i sugestie mile widziane za pośrednictwem strony internetowej.

+2

Wow - pobierz go i działało absolutnie idealnie !! Ten pakiet jest po prostu niesamowity, z niecierpliwością czekam na jego wykorzystanie w przyszłości. Tak trzymaj! – Contango

+0

Czy ktoś ma prosty konkretny przykład powyższego kodu? – Artiga

+0

'biblioteka (rClr) clrLoadAssembly ('C: \\ __ \\ TstingRLib \\ ClassLibrary1 \\ bin \\ Release \\ ClassLibrary1.dll') yObj <- clrNew (" System.System.Text, System ") Nie znaleziono typu: System.System.Text, System Błąd w clrNew ("System.System.Text, System") System ' Metoda: System.Object CreateInstance (System.String, System.Object []) Śledzenie stosu: at Rclr.ClrFacade.CreateInstance (String nazwatypu, argumenty Object [] w ___ \ AppData \ Local \ Temp \ Rtmp2D63Nz \ R.INSTALL1f3c2a50350 \ rclr \ src \ ClrFacade \ ClrFacade.cs: wiersz 316' – Artiga

3

Ujawnienie dll .NET jako dll COM, a następnie wywołanie obiektu COM w bibliotece DLL z R wydaje się być jedynym sposobem. I jest do tego pakiet: http://cran.r-project.org/web/packages/rcom/rcom.pdf

Jeśli nie możesz utworzyć biblioteki dll COM, ponieważ jest to dll innej firmy, możesz zawsze stworzyć nowy interfejs podobny do .NET dll z interfejsem COM, gdzie możesz wywołać rzeczywistą bibliotekę dll.

+1

Aby uzyskać listę progIDów w systemie, zobacz http://procbits.com/2010/11/08/get-all-progid-on-system-for-com-automation/ – Contango