Я ищу, чтобы использовать R.NET для выполнения существующего сценария R, но не имел успеха. Возможно ли это? Я успешно выполнил пример кода, поэтому моя базовая настройка в порядке.Выполнение локального скрипта R через R.NET
Мой код выглядит следующим образом:
static void RTest()
{
var envPath = Environment.GetEnvironmentVariable("PATH");
var rBinPath = System.Environment.Is64BitProcess ? @"C:\Program Files\R\R-3.0.1\bin\x64" : @"C:\Program Files\R\R-3.0.1\bin\i386";
Environment.SetEnvironmentVariable("PATH", envPath + Path.PathSeparator + rBinPath);
using(var engine = REngine.CreateInstance("RDotNet"))
{
engine.Initialize();
using(var fs = File.OpenRead(@"C:\R-scripts\r-test.R"))
{
engine.Evaluate(fs);
}
}
}
Что я бегу в консольного приложения для тестирования (в конце концов, я хочу, чтобы запустить его на стороне сервера в веб-приложение).
Сценарий r-test.R работает при запуске в RStudio, поэтому там нет проблем и должно привести к записи файла csv на диск. Я вижу некоторые сообщения «Загрузка необходимого пакета», которые выводятся на консоль, чтобы что-то работало, но результирующий файл csv не отображается.
Я видел ответ на этот пост (который также был моим). Это не сработало для меня. Хотя у меня был свой R-скрипт в папке пользователя, вначале я испытал «AccessViolationException». Поэтому я переместил сценарий R в общую папку. Тем не менее, я получаю другую ошибку в строке «Ошибка в файле ... невозможно открыть соединение». Казалось бы, выполнение этой операции не так прямолинейно, и я думаю, что мне придется рассмотреть другой подход. –
Для другой проверки доступа: [Запустить R-скрипт с запуском процесса] (http://stackoverflow.com/questions/18224439/run-r-script-with-start-process-in-net), это работает со мной. – ruedi