Вопросы по rxDataStep при использовании «transformFunc»

Следующий код R предназначен для добавления одного столбца в набор данных и возврата data.frame.

xdfAirDemo <- RxXdfData(file.path(rxGetOption("sampleDataDir"),  "AirlineDemoSmall.xdf"))

Я добавляю функцию печати для проверки длины вектора.

f.append <- function(lst){
  lst$mod_val_test <- rep(1, length(lst[[1]]))
  print(length(lst$mod_val_test))
  return(lst)
}

df.Airline <- rxDataStep(inData = xdfAirDemo, transformFunc = f.append)

Когда я запускаю вышеуказанный rxDatastep , функция печати в функции «f.append» выполняется дважды и выводит два значения. Может ли кто-нибудь помочь мне понять, как работает rxDatastep?

Результат показан ниже. [1] 10

[1] 600000

Прочитано строк: 600 000, всего обработано строк: 600 000, общее время фрагмента: 0,651 секунды


person Kingsley W    schedule 07.03.2018    source источник


Ответы (1)


Когда вы вызываете rxDataStep, он фактически запускает ваш код на первых 10 строках данных в качестве теста. Если это удается, он обрабатывает весь набор данных по одному фрагменту за раз.

Если вы не хотите, чтобы ваш код выполнялся при тестовом прогоне, вы можете проверить значение встроенной переменной .rxIsTestChunk:

f.append <- function(lst)
{
    # don't print anything if this is the test chunk
    if(.rxIsTestChunk)
        return(NULL)

    lst$mod_val_test <- rep(1, length(lst[[1]]))
    print(length(lst$mod_val_test))
    return(lst)
}
person Hong Ooi    schedule 07.03.2018
comment
Я хочу построить модель классификации. Мне нужна выборка набора данных для моделирования (70%) и проверки (30%). Зависимая переменная представляет собой двоичную переменную (Y или N), а отношение Y/N = 1/5. Я хочу, чтобы два набора данных (модель и проверка) были в том же соотношении, что и весь набор данных. Если весь набор данных разбит на множество фрагментов, в каждом фрагменте соотношение может не совпадать с исходным соотношением. Когда я применяю функцию createDataPartition (в пакете каретки) к каждому фрагменту, она может не вернуть ожидаемый результат. Не могли бы вы помочь мне в этом вопросе? - person Kingsley W; 10.03.2018