Я работаю над функциональностью, где я должен прочитать файл .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