Загрузка таблиц данных в формате CSV с помощью узла R
Данный узел или опция доступны, только если они включены в лицензии PolyAnalyst Server.
Как было сказано до этого, данная документация не содержит подробной информации о языке R. Узел R в PolyAnalyst представлен для удобства тех пользователей, которые уже знакомы с языком R и хотят интегрировать пользовательские R-скрипты в PolyAnalyst.

Узел R можно использовать для импорта таблиц данных в PolyAnalyst с целью их дальнейшей обработки с помощью других узлов.

Основная идея использования узла R для импорта таблиц данных заключается в понятии data.frame.

Исходная таблица (например, CSV-файл), которая была интерпретирована через узел R в PolyAnalyst, рассматривается в скрипте языка R в качестве объектов таблицы данных data.frame. Являясь одним из объектов языка R, data.frame используется для хранения таблиц данных в виде списка векторов одинаковой длины.

Как работать с узлом СSV, используя узел R:

  1. Добавьте узел R на скрипт.

  2. Откройте свойства узла.

  3. Перейдите на вторую вкладку (CarData.csv в нашем примере).

  4. Выберите столбцы, с которыми вы хотите работать.

r node config 1.rus

Затем перейдите на первую вкладку, чтобы вставить скрипт, который вы хотели бы использовать. В качестве примера введите в текстовом поле следующий скрипт для поиска 10 наиболее часто встречающихся моделей автомобилей из импортированного файла:

{
if (pa2r_mode == 1)
{
    # just return the list of columns and types in result
    # result = data.frame(...)
}
else
{
    # ordinary run
    # result = data.frame(...)
    modelFreq <- sort(table(CarData.csv$Model))

    # N most frequent
    N <- 10
    len <- length(modelFreq)
    modelNames <- names(modelFreq[len - N + 1 : len])

    # filter dataset
    filtered <- CarData.csv[CarData.csv$Model %in% modelNames,]

    #agregate
    result <- aggregate(filtered, list(filtered$Model), FUN = function(x) sum (!is.na(x))
    )
}
}
r node config 2.rus

Второй пример - это скрипт, который позволит показать страну производства автомобилей в соответствии с типом цилиндров, которые в них используются:

{
if (pa2r_mode == 1)
{
    # just return the list of columns and types in result
    # result = data.frame(...)
}
else
{
    aggregateFiltered <- function(d, cyl) {
        tmp <- d[d$Cylinders == cyl,]
        tmp <- aggregate(tmp, list(tmp$Origin), FUN = function(x) sum(!is.na(x)))
        tmp <- tmp[, c("Group.1", "Model")]
        colnames(tmp) <- c("Origin", cyl)
        tmp
    }

    # filter dataset
    filtered <- CarData.csv[,c("Origin", "Cylinders", "Model")];

    f1 <- data.frame()
    f2 <- FALSE
    splitValues <- names(table(filtered$Cylinders))
    for (cyl in splitValues) {
        f2 <- aggregateFiltered(filtered, cyl)
        f1 <- merge(f1, f2, all = TRUE)
    }
    result <- f1
}
}
r node config 3.rus

R скрипт возвращает объект data.frame, который называется «результат» (result). В зависимости от параметров узла R такой объект должен являться новой таблицой. Эта таблица содержит только новые столбцы, которые добавляются в набор столбцов родительского узла. В случае, если объект data.frame содержит один столбец c индексом строки (начиная с 0), то такой data.frame должен быть отфильтрован из родительского узла.