Search code examples
.netrrclr

A simple Example for Calling a .NET object from R


I was trying this example from

Calling .NET/C# from R

But error is thrown when I am using following code

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

In following manner:

library(rClr) 
clrLoadAssembly('C:\\__\\TstingRLib\\ClassLibrary1\\bin\\Release\\ClassLibrary.dll') 

myObj <- clrNew('System.System.Text,System')
 Type not found: System.System.Text,System Error in clrNew("System.System.Text,System") : Type: System.ArgumentException Message: Could not determine Type from string 'System.System.Text,System' Method: System.Object CreateInstance(System.String, System.Object[]) Stack trace: at Rclr.ClrFacade.CreateInstance(String typename, Object[] arguments) in ___\AppData\Local\Temp\Rtmp2D63Nz\R.INSTALL1f3c2a50350\rClr\src\ClrFacade\ClrFacad‌​e.cs:line 316

How can I get rid of this error?


Solution

  • clrLoadAssembly('-----\\Documents\\visual studio 2013\\Projects\\DataConversionSample\\DataConversionSample\\bin\\Release\\DataConversionSample.dll')
    > typename = clrGetTypesInAssembly('DataConversionSample')
    > typename = "rClr.Samples.DataConversionSample,DataConversionSample"
    > obj = clrNew(typename)
    > obj
    An object of class "cobjRef"
    Slot "clrobj":
    <pointer: 0x00000000181cb140>
    
    Slot "clrtype":
    [1] "rClr.Samples.DataConversionSample,DataConversionSample"
    

    Had to do Little more research. Found a tutorial here.

    https://searchcode.com/codesearch/view/28480847/

    Which helped me get my results:

    str(clrCallStatic(typename, "GetOneDimStringArray", as.integer(5)))
     chr [1:5] "0" "1" "2" "3" "4"
    
    
    DateTime to string
    
    
    clrCallStatic(typename, "DateTimeToString", as.Date('2015-10-26')
    + )
    [1] "26/10/15 12:00:00 AM"
    
    
    Numeric Vector
    
    
    > str(clrCallStatic(typename, "GetOneDimArray", as.integer(5)))
     num [1:5] 0 1.1 2.2 3.3 4.4
    
    
    
    Rectangular Array
    
    clrCallStatic(typename, "GetRectArray", as.integer(3), as.integer(5))
         [,1] [,2] [,3] [,4] [,5]
    [1,]  0.0 0.22 0.44 0.66 0.88
    [2,]  1.1 1.32 1.54 1.76 1.98
    [3,]  2.2 2.42 2.64 2.86 3.08