我正在使用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脚本。
非常感谢您提前回复。
答案 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的想法。不能测试,不能确定它是否可以会工作,但也许你会发现这在某种程度上有所帮助。