我正在使用 MS Visual Studio R 工具,我可以在其中使用 R 语言准备和测试脚本。然后我想从 C# 代码启动进程(使用 Process.Start(startInfo)
)来执行此脚本,等待它完成并检查输出。该脚本生成一些统计计算并将结果保存在硬盘上的 .csv
文件中。
如何找到 R 解释器的路径?下面的代码是否正确?
从 C# 代码调用 R 脚本时,是否可以将命令行参数添加到它?
ProcessStartInfo startInfo = new ProcessStartInfo();
r_interpreter_path="???";
startInfo.FileName = r_interpreter_path;
startInfo.Arguments = "\"" + r_script_name + " \"";
//Add command line arguments
startInfo.Arguments += " -sd " + date_start_str + " -ed " + date_end_str;
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.CreateNoWindow = true;
startInfo.RedirectStandardError = true;
using (Process process = Process.Start(startInfo))
{
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
Debug.WriteLine(result);
}
process.WaitForExit();
//string errMsg = process.StandardError.ReadToEnd();
//if (errMsg != "")
// return false;
GC.Collect();
}
最佳答案
有多个 R 可执行文件。要以批处理模式运行 R 脚本,您需要使用 Rscript.exe
。它位于 R 安装目录的 bin/
子文件夹中。
第一个参数是要执行的.R
文件,可以提供额外的参数。通过调用 commandArgs()
函数,您的 R 脚本可以使用所有参数。
请注意,存在 R.NET,它也可以作为 NuGet 包使用。该库允许您直接与 C# 中的 R 解释器交互。您也可以直接交换数据。
关于c# - 如何从 C# 代码运行 R 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45454902/