2013-08-20 2 views
0

Я ищу, чтобы использовать 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 не отображается.

ответ

1

Как указано в ответе на this post in the R.NET discussions, вы можете использовать engine.Evaluate(@"source('c:/path/to/r-test.R')"). Хотя многое зависит от содержания вашего сценария, конечно, оно должно работать. Тем не менее, ваш код выглядит так, как будто он должен работать, хотя я не пробовал ваш подход.

Возможно, что R.NET задыхается от некоторого конкретного оператора R в вашем скрипте. Если у вас есть визуальная студия, вы должны быть готовы к присоединению к процессу, если вы используете R.NET, скомпилированный из исходного кода с помощью отладочных символов. Если у вас есть Visual Studio, это самый простой вариант; Студия MonoDevelop/Xamarin также является вариантом, хотя и немного более привлекательным. Это должно помочь вам определить неприятную линию.

Надеюсь, что это поможет

+0

Я видел ответ на этот пост (который также был моим). Это не сработало для меня. Хотя у меня был свой R-скрипт в папке пользователя, вначале я испытал «AccessViolationException». Поэтому я переместил сценарий R в общую папку. Тем не менее, я получаю другую ошибку в строке «Ошибка в файле ... невозможно открыть соединение». Казалось бы, выполнение этой операции не так прямолинейно, и я думаю, что мне придется рассмотреть другой подход. –

+0

Для другой проверки доступа: [Запустить R-скрипт с запуском процесса] (http://stackoverflow.com/questions/18224439/run-r-script-with-start-process-in-net), это работает со мной. – ruedi

Смежные вопросы