Р:Создание тестовых примеров типа lapply()
Вопрос
Я работал над кодом для создания параллельной функции типа lapply(), которая использует механизм Amazon Elastic Map уменьшает в качестве «сетки» для обработки (да, это картограф без редуктора).После того, как я получу стабильность кода, я абстрагирую его как бэкэнд foreach.Но сначала мне нужно создать тесты для проверки имеющегося у меня кода.
Какие были бы хорошие тестовые примеры для этой функции?
Мой канонический тестовый пример сейчас следующий:
myList <- NULL
set.seed(1)
for (i in 1:10){
a <- c(rnorm(999), NA)
myList[[i]] <- a
}
outputLocal <- lapply(myList, mean, na.rm=T)
outputEmr <- emrlapply(myList, mean, myCluster, na.rm=T)
all.equal(outputEmr, outputLocal)
Этот тестовый пример гарантирует, что необязательный аргумент na.rm=T
передается правильно на удаленные машины.Какие еще тестовые примеры я мог бы использовать?в настоящее время я не поддерживаю simplify
или USE.NAMES
аргументы, хотя я это сделаю в будущем.
Решение
Что произойдет, если вы пройдете emrlapply
- Список векторов символов
- Пустой список
- Список, который пуст только после всех
NA
значения были удалены NULL
- Вектор (
lapply
работает с векторами) - Матрица
- Data.frame
- Список списков
Вам также понадобится тест, чтобы увидеть, корректно ли ваша функция обрабатывает недоступность EMR или отсутствие необходимых пакетов.