2012-09-13 33 views
12

Sadece .NET'te kullanılabilen R'den bir API kullanmak istiyorum. R'den .NET C# kodunu çağırmak için kullanılabilecek standart bir yöntem var mı? Eğer öyleyse, nasıl yapabilirim?.NET/C# çağrısı R

cevap

13

düşünebilirsiniz bu tartışmanın okuyucular ben R. It dan keyfi .NET kod erişmek için birkaç yıl boyunca üzerinde çalışıyor olması rClr package, bir başka seçenek tersine, bir yoludur, R.NET bir kardeş olduğunu .NET'ten R'ye erişmek için.

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

Görüşler ve öneriler web sitesi üzerinden kabul edilir:

RCLR paketinin bir lezzet vermek için, kanonik "Merhaba Dünya" gibi görünüyor.

+2

Wow - indirildi ve Kesinlikle mükemmel çalıştı! Bu paket sadece şaşırtıcı, gelecekte çok kullanmak için sabırsızlanıyoruz. İyi işlere devam et! – Contango

+0

Herhangi birinin yukarıdaki kodlara özel bir örneği var mı? – Artiga

+0

'library (rClr) clrLoadAssembly ('C: \\ __ \\ TstingRLib \\ ClassLibrary1 \\ bin \\ Sürüm \\ ClassLibrary1.dll') yObj <- clrNew ('System.System.Text, System') Tür bulunamadı: System.System.Text, System ClrNew hatası ("System.System.Text, System"): Tür: System.ArgumentException İleti: Type dizesinden 'System.System.Text' belirlenemedi, Sistem ' Yöntem: System.Object CreateInstance (System.String, System.Object []) Yığın izleme: Rclr.ClrFacade.CreateInstance (String typename, Object [] argümanlar) ___ \ AppData \ Local \ Temp \ Rtmp2D63Nz \ R.INSTALL1f3c2a50350 \ rClr \ src \ ClrFacade \ ClrFacade.cs: satır 316' – Artiga

3

.NET dll'yi COM dll olarak gösterme ve sonra dll'deki bir COM nesnesini çağırmak tek yol gibi görünüyor. Ve bunun için bir paket var: http://cran.r-project.org/web/packages/rcom/rcom.pdf

Üçüncü taraf dll olduğundan bir COM dll yapamıyorsanız, her zaman gerçek dll'yi arayabileceğiniz COM arabirimli yeni bir arayüz benzeri .NET dll oluşturabilirsiniz.

+1

Sistemde ProgID'lerin bir listesini görmek için bkz. Http://procbits.com/2010/11/08/get-all-progid-on-system-for-com-automation/ – Contango