Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C#NET中启动R图_C#_.net_Visual Studio 2010_R_Visual Studio 2012 - Fatal编程技术网

从C#NET中启动R图

从C#NET中启动R图,c#,.net,visual-studio-2010,r,visual-studio-2012,C#,.net,Visual Studio 2010,R,Visual Studio 2012,我正在用C#编写一个控制台应用程序,我想使用R引擎在窗口中弹出一个图形 有人知道在Visual Studio 2012中这是否可能吗?是的,这是可能的。您需要的是从C#执行R代码。通过在谷歌上搜索,我找到了以下项目:杰夫·B·克伦威尔 以下是生成20个正态随机变量的直方图图的代码: //using STATCONNECTORCLNTLib; StatConnector test1 = new StatConnectorClass(); test1.Init("R"); test1.Eval

我正在用C#编写一个控制台应用程序,我想使用R引擎在窗口中弹出一个图形


有人知道在Visual Studio 2012中这是否可能吗?

是的,这是可能的。您需要的是从C#执行R代码。通过在谷歌上搜索,我找到了以下项目:杰夫·B·克伦威尔

以下是生成20个正态随机变量的直方图图的代码:

//using STATCONNECTORCLNTLib; 
StatConnector test1 = new StatConnectorClass(); 
test1.Init("R"); 
test1.Evaluate("x <- rnorm(20)"); 
test1.EvaluateNoReturn("hist(x)");
//使用STATCONNECTORCLNTLib;
StatConnector test1=新的StatConnectorClass();
test1.Init(“R”);

test1.Evaluate(“x包R.net可能是一个很好的开始查看快速谷歌搜索结果的地方。或者,您可以使用一种更基本的方法,通过创建可以从命令行调用的R脚本,并使用来自C#的系统调用。

正如其他人所说,
R.net
是一个很有前途的项目(仍然不稳定)

背后的理念是在.net框架内操作R对象

我认为,如果您只想在窗口中弹出一个图形,那么最好创建一个.bat文件,在其中使用非常好的
Rscript
命令调用R脚本

像这样的东西应该适合你:

在你这边,你打电话

Process.Start("launcher.bat");    
然后定义
启动器.bat

PATH PATH_TO_R/R-version/bin;%path%
cd PATH_TO_R_SCRIPT
Rscript myscript.R arg1 arg2

要将图形从R拉入.NET并显示在WinForms面板上,请执行以下操作:

首先,我们必须安装Statconn,它是.NET和R之间的桥梁。重要的是安装正确的版本(如果x32和x64的组合不正确,它将无法工作)。确保这一点的最简单方法是从R控制台内安装Statconn:

# Install Statconn bridge.
# Load the "rcom" package:
install.packages('rcom')
# Load the library 'rcom':
library('rcom')
此时,它将给出一个错误,即您没有安装
Statconn
库。这很容易修复:

install.packages('statconn')
这将自动安装StatConn桥的正确版本,它是一个独立的windows安装程序

现在我们已经安装了Statconn,我们可以在
C:\Program Files(x86)\Statconn\DCOM\samples\Graphics.NET
中打开示例.NET项目。此示例.NET项目演示如何使用R在C#WinForms项目中绘制图形

Python、C++、VBS、JScript等./P>还有其他示例代码。 更新
如果您无法实现此功能,请尝试
R.Net
,这可能是一个更好的选择,因为Statconn有一段时间没有更新,并且对于“32位”/“64位”/“支持的R版本”的不太完美的混合非常挑剔。

不确定这是否真的相关,但有一个F#类型提供程序可以与R进行交互。还没有尝试过它我自己想:此外,你已经尝试过什么?即使看起来不优雅,这通常是最简单的方法。@如果你呆在一个环境中,通过RDCOM的Fuex解决方案可以工作,但在R版本更改时会经常出现问题。另请参阅@Dietermene谢谢你的评论!有关控制台应用程序(由OP询问)我认为这是一个连贯的解决方案!我尝试了你的rserve床上测试,但它不适用于express c#2010,也许你使用了一个更新的版本?忘了我的版本吧,这是一个非常早期的版本,在Oliver Haynold提出后我还没有维护它。注意:我已经使用了将近2年了,所以我不知道当前的状态。@Dietermene可以请你在评论中加入一些评论,我可能会对你的答案投赞成票。显然,R.NET不允许你显示任何图形。很遗憾。但是,理论上,可以从R中捕获位图,然后使用WinForms手动显示位图(我在Mathematica中完成了这项工作,它工作得非常漂亮)。三维绘图软件包RGL有一个选项RGL.snapshot,用于创建png文件。理想情况下,我会找到一些返回位图的调用,而不是在屏幕上显示位图(写入png文件是可行的,但速度较慢).由于某些原因,我无法实现此功能,因为我认为自本版本发布以来,R和Statconn的情况都发生了变化。我的回答显示了一种确保加载正确版本Statconn的方法。这对R版本3.2.3不起作用。当前版本是否有解决方案???@Vini最可能的问题是32位与64位。Everyt兴必须是一个或另一个,包括R和Statconn的版本。我还模糊地指出,R的新版本不起作用-也许可以试试旧版本的verison,看看这是否起作用?:谢谢你的输入。我正在使用R.Net。所以事情已经解决了。@Vini很好,我认为R.Net可能是比Statconn更好的选择(已经有一段时间没有更新了)。我已经使用了r.net。我能够在控制台上获取图形。有没有办法在web应用程序中获取它。它似乎在我的web应用程序中不起作用[