是否可以使用 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。无法测试也不能确定它是否有效,但也许您会发现它在某些方面有帮助。
我正在使用 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。无法测试也不能确定它是否有效,但也许您会发现它在某些方面有帮助。