gpt4 book ai didi

c# - 以编程方式执行 R 脚本

转载 作者:可可西里 更新时间:2023-11-01 08:06:20 24 4
gpt4 key购买 nike

我有一个生成一些 R 代码的 C# 程序。现在我将脚本保存到文件中,然后将其复制/粘贴到 R 控制台中。我知道 R 有一个 COM 接口(interface),但它似乎不适用于最新版本的 R(或 2.7.8 之后的任何版本)。有什么方法可以在将 R 脚本保存到文件后以编程方式从 C# 执行它吗?

最佳答案

这是我最近为此编写的类(class)。您还可以从 C# 和 R 传入和返回参数:

/// <summary>
/// This class runs R code from a file using the console.
/// </summary>
public class RScriptRunner
{
/// <summary>
/// Runs an R script from a file using Rscript.exe.
/// Example:
/// RScriptRunner.RunFromCmd(curDirectory + @"\ImageClustering.r", "rscript.exe", curDirectory.Replace('\\','/'));
/// Getting args passed from C# using R:
/// args = commandArgs(trailingOnly = TRUE)
/// print(args[1]);
/// </summary>
/// <param name="rCodeFilePath">File where your R code is located.</param>
/// <param name="rScriptExecutablePath">Usually only requires "rscript.exe"</param>
/// <param name="args">Multiple R args can be seperated by spaces.</param>
/// <returns>Returns a string with the R responses.</returns>
public static string RunFromCmd(string rCodeFilePath, string rScriptExecutablePath, string args)
{
string file = rCodeFilePath;
string result = string.Empty;

try
{

var info = new ProcessStartInfo();
info.FileName = rScriptExecutablePath;
info.WorkingDirectory = Path.GetDirectoryName(rScriptExecutablePath);
info.Arguments = rCodeFilePath + " " + args;

info.RedirectStandardInput = false;
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
info.CreateNoWindow = true;

using (var proc = new Process())
{
proc.StartInfo = info;
proc.Start();
result = proc.StandardOutput.ReadToEnd();
}

return result;
}
catch (Exception ex)
{
throw new Exception("R Script failed: " + result, ex);
}
}
}

注意:如果您有兴趣清理该过程,您可能需要将以下内容添加到您的代码中。

proc.CloseMainWindow();proc.Close();

关于c# - 以编程方式执行 R 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4485943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com