2012-09-13 17 views
12

Me gustaría utilizar una API de R que solo está disponible en .NET. ¿Existe un método estándar que pueda usarse para llamar al código .NET C# de R? Si es así, ¿cómo puedo hacerlo?Llamar .NET/C# desde R

Respuesta

13

Otra opción que los lectores de esta discusión podrían considerar es el rClr package, en el que he estado trabajando durante un par de años para acceder al código .NET arbitrario de R. Es un hermano de R.NET que, a la inversa, es una forma para acceder a R desde .NET.

para dar un sabor del paquete CRAI, la canónica "Hello World" se parece a:

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

Retroalimentación y recepción de las sugerencias a través del sitio web.

+2

Vaya, lo descargué y funcionó absolutamente perfectamente !! Este paquete es simplemente increíble, espero usarlo mucho en el futuro. Sigan con el buen trabajo! – Contango

+0

¿Alguien tiene un ejemplo específico simple del código anterior? – Artiga

+0

'library (rClr) clrLoadAssembly ('C: \\ __ \\ TstingRLib \\ ClassLibrary1 \\ bin \\ Release \\ ClassLibrary1.dll') yObj <- clrNew ('System.System.Text, System') Tipo no encontrado: System.System.Text, Sistema Error en clrNew ("System.System.Text, System"): Tipo: System.ArgumentException Mensaje: No se pudo determinar el tipo desde la cadena 'System.System.Text, Sistema ' Método: System.Object CreateInstance (System.String, System.Object []) Seguimiento de pila: en Rclr.ClrFacade.CreateInstance (String typename, Object [] arguments) en ___ \ AppData \ Local \ Temp \ Rtmp2D63Nz \ R.INSTALL1f3c2a50350 \ rClr \ src \ ClrFacade \ ClrFacade.cs: línea 316 – Artiga

3

Exponer .NET dll como COM dll y llamar a un objeto COM en el dll desde R parece ser la única forma. Y hay un paquete para él: http://cran.r-project.org/web/packages/rcom/rcom.pdf

Si no puede hacer un dll COM porque es dll de terceros, siempre puede crear una nueva interfaz dll de .NET con interfaz COM donde puede llamar dll real.

+1

Para obtener una lista de los ProgID en el sistema, consulte http://procbits.com/2010/11/08/get-all-progid-on-system-for-com-automation/ – Contango