是否可以使用C#中定义的对象作为使用R.NET的R函数/命令的输入

时间:2015-05-14 06:55:08

标签: c# r 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"没找到。

有没有办法将输入传递给C#中的R函数而不用双引号显式写入该输入,这只是R脚本。

非常感谢您提前回复。

1 个答案:

答案 0 :(得分:3)

不是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的想法。不能测试,不能确定它是否可以会工作,但也许你会发现这在某种程度上有所帮助。