IMsRTransform.Code

Синтаксис Fore

Code: String;

Синтаксис Fore.NET

Code: string;

Описание

Свойство Code определяет выражение для расчета модели.

Комментарии

Для формирования выражения используйте язык R. Более подробное описание языка R приведено в документации к R.

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MS», содержащим модель с идентификатором «MODEL_LINEAR_R». Данная модель должна рассчитываться методом «R». В репозитории должна быть настроена интеграция с R. Подробнее о том, как можно настроить интеграцию вы можете узнать в разделе «Как настроить интеграцию с R?».

Добавьте ссылки на системные сборки: Metabase, Ms.

Sub UserProc;
Var
    mb: IMetabase;
    msKey: Integer;
    modelObj: IMetabaseObject;
    transf: IMsFormulaTransform;
    formula: IMsFormula;
    RTransform: IMsRTransform;
    inputs: IMsFormulaTermList;
    inputTerm, result: IMsRFormulaTerm;
Begin
    // Получаем репозиторий
    mb := MetabaseClass.Active;
    // Получаем ключ контейнера моделирования
    msKey := mb.GetObjectKeyById("MS");
    // Получаем модель R
    modelObj := mb.ItemByIdNamespace("MODEL_LINEAR_R", msKey).Edit;
    // Получаем параметры расчета модели
    transf := (modelObj As IMsModel).Transform;
    formula := transf.FormulaItem(0);
    RTransform := formula.Method As IMsRTransform;
    // Получаем первую входную переменную
    inputs := RTransform.Inputs;
    inputTerm := inputs.Item(0As IMsRFormulaTerm;
    // Переименовываем входную переменную
    inputTerm.Name := "a";
    // Получаем моделируемую переменную
    result := RTransform.Result As IMsRFormulaTerm;
    // Переименовываем выходную переменную
    result.Name := "res";
    // Задаем выражение для расчета модели
    RTransform.Code := "res <- a + 1;";
    // Сохраняем изменения
    modelObj.Save;
End Sub UserProc;

В результате выполнения примера для модели «MODEL_LINEAR_R» будет задан код для расчета.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Ms;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    msKey: uinteger;
    modelObj: IMetabaseObject;
    transf: IMsFormulaTransform;
    formula: IMsFormula;
    RTransform: IMsRTransform;
    inputs: IMsFormulaTermList;
    inputTerm, result: IMsRFormulaTerm;
Begin
    // Получаем репозиторий
    mb := Params.Metabase;
    // Получаем ключ контейнера моделирования
    msKey := mb.GetObjectKeyById("MS");
    // Получаем модель R
    modelObj := mb.ItemByIdNamespace["MODEL_LINEAR_R", msKey].Edit();
    // Получаем параметры расчета модели
    transf := (modelObj As IMsModel).Transform;
    formula := transf.FormulaItem[0];
    RTransform := formula.Method As IMsRTransform;
    // Получаем первую входную переменную
    inputs := RTransform.Inputs;
    inputTerm := inputs.Item[0As IMsRFormulaTerm;
    // Переименовываем моделируемую переменную
    inputTerm.Name := "a";
    // Получаем выходную переменную
    result := RTransform.Result As IMsRFormulaTerm;
    // Переименовываем выходную переменную
    result.Name := "res";
    // Задаем выражение для расчета модели
    RTransform.Code := "res <- a + 1;";
    // Сохраняем изменения
    modelObj.Save();
End Sub;

См. также:

IMsRTransform | Модель «R»