Возникла проблема при чтении spss-файла с использованием пакета R. NET - PullRequest
0 голосов
/ 25 марта 2020

Я работаю над функциональностью, где я должен прочитать файл .spss, используя пакет R. NET. Я смог успешно выполнить команды в R Gui, ниже приведен список команд:

library(foreign)
md <- read.spss("{path_to_file}\\med.sav", use.value.label = TRUE, to.data.frame = TRUE)
install.packages("writexl")
library("writexl)

write_xlsx(md,"{path_to_file}\\med.xlsx",col_names = TRUE,format_headers = TRUE) 

Когда я попытался запустить тот же код с использованием пакета R. NET nuget, я столкнулся с ошибкой :

Мой код:

REngine.SetEnvironmentVariables();
REngine engine = REngine.GetInstance();
var test = _hostingEnvironment.WebRootPath;
engine.Evaluate("library(foreign)");
engine.Evaluate("install.packages('writexl')");
engine.Evaluate("df <- read.spss('{path_to_file}\\med.sav', use.value.label = TRUE, to.data.frame = TRUE)");
engine.Evaluate("library('writexl')");
engine.Evaluate("write_xlsx(df, '{path_to_file}\\medd.xlsx',col_names = TRUE,format_headers = TRUE)");
engine.Dispose();

Я получаю исключение на линии engine.Evaluate("df <- read.spss('{path_to_file}\\med.sav', use.value.label = TRUE, to.data.frame = TRUE)");.

Ошибка:

   at RDotNet.REngine.<Defer>d__59.MoveNext()
   at System.Linq.Enumerable.TryGetLast[TSource](IEnumerable`1 source, Boolean& found)
   at System.Linq.Enumerable.LastOrDefault[TSource](IEnumerable`1 source)
   at RDotNet.REngine.Evaluate(String statement, REnvironment environment)
   at EZACCESS.Services.Services.SurveyService.<UploadSurvey>d__11.MoveNext() in xxxx.cs:line 89
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at EZACCESS.Api.Controllers.SurveysController.<Upload>d__10.MoveNext() in xxxx.cs:line 137
...