2012-09-13 33 views
12

Tôi muốn sử dụng API từ R chỉ khả dụng trong .NET. Có một phương pháp tiêu chuẩn có thể được sử dụng để gọi NET C# mã từ R? Nếu vậy, làm thế nào tôi có thể làm như vậy?Gọi. NET/C# từ R

Trả lời

13

Một tùy chọn khác mà độc giả của cuộc thảo luận này có thể xem xét là rClr package, mà tôi đã làm việc trong một vài năm để truy cập mã .NET tùy ý từ R. Đó là anh chị em của R.NET, ngược lại, là một cách để truy cập R từ .NET.

Để cung cấp cho một hương vị của gói rClr, các kinh điển "Hello World" trông giống như:

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

Phản hồi và góp ý chào đón thông qua trang web.

+2

Wow - đã tải xuống và nó hoạt động hoàn toàn hoàn hảo !! Gói này chỉ đơn giản là tuyệt vời, tôi mong muốn sử dụng nó rất nhiều trong tương lai. Hãy tiếp tục phát huy! – Contango

+0

Có ai có một ví dụ cụ thể đơn giản về mã trên không? – Artiga

+0

'thư viện (rClr) clrLoadAssembly ('C: \\ __ \\ TstingRLib \\ LớpLibrary1 \\ bin \\ Release \\ ClassLibrary1.dll') yObj <- clrNew ('System.System.Text, System') Không tìm thấy loại: System.System.Text, System Lỗi trong clrNew ("System.System.Text, System"): Loại: System.ArgumentException Thông báo: Không thể xác định Loại từ chuỗi 'System.System.Text, Hệ thống ' Phương pháp: System.Object CreateInstance (System.String, System.Object []) Stack trace: tại Rclr.ClrFacade.CreateInstance (String typename, Object [] arguments) trong ___ \ AppData \ Local \ Temp \ Rtmp2D63Nz \ R.INSTALL1f3c2a50350 \ rClr \ src \ ClrFacade \ ClrFacade.cs: dòng 316' – Artiga

3

Hiển thị tệp .dll .NET dưới dạng dll COM và sau đó gọi đối tượng COM trong dll từ R có vẻ là cách duy nhất. Và có một gói cho nó: http://cran.r-project.org/web/packages/rcom/rcom.pdf

Nếu bạn không thể tạo một dll COM vì nó là dll của bên thứ ba, bạn luôn có thể tạo giao diện .NET dll mới với giao diện COM nơi bạn có thể gọi dll thực.

+1

Để có danh sách ProgID trong hệ thống, hãy xem http://procbits.com/2010/11/08/get-all-progid-on-system-for-com-automation/ – Contango