Для захвата предупреждения, выдаваемого сценарием R, с помощью R.NET - PullRequest
1 голос
/ 14 декабря 2011

Когда я использую приведенный ниже скрипт в консоли R, он выдает мне вывод в виде строки «Warning»

jj = ts(scan("jj.dat"),  start=1960, frequency=4)  
tryCatch(arima(jj, 
         order = c(1, 0,1)), 
         warning=function(w) cat("Warning"))

Я пытался использовать тот же код в R.NET и ожидал получить строку «Warningmsgstr ", но я получаю исключение Parser, показывающее" Ошибка кода ".Ниже приведен фрагмент кода, который я пробовал в R.NET.

try
{
   string script = "tryCatch(arima(jj, 
                             order = c(4, 0,6)), 
                             warning=function(w) cat(\"Warning\"))";
   string str=engine.EagerEvaluate("script").AsCharacter().First();//*
}catch (Exception ex)
{
}

Пожалуйста, дайте мне некоторую идею о том, как мы можем решить эту проблему.Или есть какой-либо другой способ перехвата предупреждений и сообщений об ошибках R Script в R.NET.

1 Ответ

1 голос
/ 14 декабря 2011

Исходя из моего опыта интеграции R с другими языками (rpy, Python и R), я бы сохранил минимальное количество исходного кода R внутри .NET.Я бы хотел написать в файле .R функцию, которая делает то, что вы хотите.

hello = function() { print("Hello World") } 

Сохранение этой функции внутри spam.r позволяет использовать source для загрузки этой новой функции в сеанс R, запущенный внутри .NET.Тогда вы можете создать очень простой R-скрипт:

source("spam.r")
hello()

Конечно, это довольно тривиальный пример, но hello может содержать гораздо более сложный код.Таким образом вы предотвращаете любые ошибки из-за написания кода R в .NET (в rpy там, где некоторые проблемы с этим, например, data.frame, не допускались).Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...