我想知道是否可以通过 COM 调用从 R 调用 .NET 函数。
该库rcom
允许调用 COM 对象,因此理论上,对于任何作为 COM 对象公开的 .NET 程序集,这应该是可能的。
为简单起见,我将看看是否可以调用 in 中的.Reverse()
函数System.Text
,默认情况下,它作为 .NET 框架中的 COM 对象公开。
这是我到目前为止所尝试的:
我在我的系统中获得了 ProgID 的列表(请参阅C# 代码的链接)。这是我系统中相关 ProgID 的列表:
---start list of COM ProgID entries--- <snip> System.SystemException -> mscoree.dll System.Text.ASCIIEncoding -> mscoree.dll System.Text.StringBuilder -> mscoree.dll System.Text.UnicodeEncoding -> mscoree.dll System.Text.UTF7Encoding -> mscoree.dll System.Text.UTF8Encoding -> mscoree.dll <snip> ---end list---
此 R 代码加载作为 COM 对象公开的 .NET .dll:
library('rcom') x <- comCreateObject("System.Text.ASCIIEncoding")
它肯定会找到 COM 对象:
x attr(,"class") 1 "COMObject"
我的问题是 - 我如何调用
.Reverse()
这个 COM 对象中的函数?
更新
在 .NET 中,调用将是:
string x = "hello".Reverse();
那么,在 R 中,调用会是什么?
更新
有关 R 调用 C# 的示例,请参阅幻灯片 61中在 Windows 应用程序中嵌入 R 中的R 调用 C# 。
请注意,这ProgId
是ProjectName.ClassName
来自 .NET 类。