Вызов R (язык программирования) из .net
Я работаю над приложением, которое требует большой частичной обработки и вывода в виде изображений в рабочем приложении .net. Проблемы, в том числе генерация выходных изображений, кажутся естественными для R http://www.r-project.org/
Есть ли оболочка, API, SDK или порт, которые позволят мне вызвать R из .net?
Ответы
Ответ 1
R.NET довольно плохо работает с более новой версией R. И если он не работает правильно, он работает ужасно (и будет продолжать делать это, если вы точно не знаете, как его исправить).
Лично я бы рекомендовал использовать файлы R script и выполнить их.
Что вам нужно сделать, это запустить R script с помощью
> sink()
> #set your working directory here with setwd()
> #your code comes in here
> sink(#name your output file here - could label it with a .txt if you please
+ )
И из .NET вы должны включить пространство имен System.Diagnostics, набрав using System.Diagnostics
, а затем напишите этот код:
string strCmdLine;
strCmdLine = "R CMD BATCH" + /* the path to your R script goes here */;
System.Diagnostics.Process.Start("CMD.exe",strCmdLine);
process1.Close();
Затем вы можете использовать StreamReader следующим образом:
StreamReader ROutput = new StreamReader(/* your R output file path should go here */)
И затем проанализируйте его, как вам угодно (см. RegEx и метод разделения строк, если вам тоже нужна помощь).
Надеюсь, это поможет!
Ответ 2
Я нашел эту библиотеку проще в использовании:
http://rdotnet.codeplex.com/
Некоторые причины:
- Требуется только одна сборка .NET
- Сервер DCOM на самом деле требует нескольких компонентов из разных мест.
- Один из компонентов имеет очень ограничительную лицензию. Разрешены только прямые загрузки с веб-сайта - никакая другая форма распространения не разрешена, по умолчанию, что сделает интересным развертывание.
Ответ 3
Для записи, если вы хотите вызвать С# из R, проверьте rClr на https://rclr.codeplex.com/.
Ответ 4
Как говорили другие люди, R.NET довольно глючит.
Чтобы защитить себя от эффектов новых версий R, вы можете использовать R-server (rserve) здесь.
Затем вы можете использовать rserve-client для выполнения ваших R-скриптов.
В sourceforge вы найдете версию С#.
Вам понадобится R 1.5+, установленный на сервере.