是否可以使用 C# 中定义的对象作为 R function/command using R.NET 的输入

Is it possible to use an object defined in C# to serve as an input to R function/command using R.NET

我正在使用 R.NET 库在 C# 中调用 R 函数。我想在 c# 中定义或构造输入并将其传递给 R 命令。 我试过了:

engine.Evaluate("library(mirt)");
engine.Evaluate("x=mirt(Science,1)");
S4Object obj111 = engine.GetSymbol("x").AsS4();
engine.Evaluate("pl=x@Pl");
NumericVector pl_c= engine.GetSymbol("pl").AsNumeric();
int[] resp_c = new int  [] {1,1,1,1};
engine.Evaluate("ff=fscores(x, response.pattern=resp_c)");

在尝试此操作时,我遇到了一个错误,上面写着,

"resp_c" not found.

有没有什么方法可以将输入从 C# 传递给 R 函数,而无需在双引号中显式写入该输入,这只是 R 脚本。

非常感谢您提前回复。

不是 c# 专家,但快速浏览 the doc 发现您可以通过以下方式实现您想要的:

int[] resp_c = new int  [] {1,1,1,1};
IntegerVector resp_cR = engine.CreateIntegerVector(resp_c);
engine.SetSymbol("resp_c", resp_cR);
engine.Evaluate("ff=fscores(x, response.pattern=resp_c)");

您需要从 c# 数组中创建一个 R 对象,然后为其指定一个符号。

老实说,我从来没有用 c# 编程过,但我用 Java 和 JRI(java/R 集成)编程,并且知道如何将 Java 对象传递给 R。无法测试也不能确定它是否有效,但也许您会发现它在某些方面有帮助。