💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. Читайте код построчно, учитывайте типы, атрибуты, пропуски и допущения анализа. После завершения откроются общий процент, 4 тематических шкал и объяснение к каждому заданию.
Вопрос 1 из 20
Ситуация: Аналитик применяет функцию ко всем столбцам таблицы, не заметив, что один из них содержит подписи. Какое правило нужно применить к этому фрагменту прежде всего?
R Фрагмент R Копировать
df <- data.frame(a = 1:3, b = c('x', 'y', 'z'))
result <- apply(df, 2, class)
result
lapply() всегда возвращает список той же длины, что и входной объект, сохраняя разнородные результаты
tapply() разбивает вектор по факторам и применяет функцию к каждой комбинации уровней, возвращая массив с возможными NA для пустых ячеек
apply() работает по измерениям массива и перед вызовом функции может преобразовать data.frame в матрицу общего типа
rowSums и colMeans явно задают направление агрегации и обычно надёжнее apply() для стандартных числовых сводок
sapply() пытается упростить результат lapply и потому может вернуть вектор, матрицу либо список в зависимости от данных
Вопрос 5 из 20
Ситуация: Аналитик применяет функцию ко всем столбцам таблицы, не заметив, что один из них содержит подписи. Как сформулировать вывод без лишних обобщений?
R Фрагмент R Копировать
df <- data.frame(a = 1:3, b = c('x', 'y', 'z'))
result <- apply(df, 2, class)
result
apply() работает по измерениям массива и перед вызовом функции может преобразовать data.frame в матрицу общего типа; при этом главный риск состоит в том, что наличие одного текстового столбца превращает все столбцы во строки и делает числовую функцию бессмысленной
lapply() всегда возвращает список той же длины, что и входной объект, сохраняя разнородные результаты; при этом главный риск состоит в том, что наличие одного текстового столбца превращает все столбцы во строки и делает числовую функцию бессмысленной
sapply() пытается упростить результат lapply и потому может вернуть вектор, матрицу либо список в зависимости от данных; при этом главный риск состоит в том, что изменение длины результата у одного элемента меняет тип всей структуры и ломает стабильный интерфейс
apply() работает по измерениям массива и перед вызовом функции может преобразовать data.frame в матрицу общего типа; при этом главный риск состоит в том, что ожидание автоматического упрощения приводит к передаче списка в арифметику или табличную функцию
apply() работает по измерениям массива и перед вызовом функции может преобразовать data.frame в матрицу общего типа; поэтому отсутствие сообщения об ошибке уже подтверждает корректность результата
Вопрос 10 из 20
Ситуация: Для каждого столбца вычисляется диапазон, а следующий шаг ошибочно считает результат обычной матрицей. Какое заключение лучше всего выдерживает проверку?
R Фрагмент R Копировать
x <- list(a = 1:3, b = 4:5)
result <- lapply(x, range)
result
lapply() всегда возвращает список той же длины, что и входной объект, сохраняя разнородные результаты; при этом главный риск состоит в том, что ожидание автоматического упрощения приводит к передаче списка в арифметику или табличную функцию
apply() работает по измерениям массива и перед вызовом функции может преобразовать data.frame в матрицу общего типа; при этом главный риск состоит в том, что наличие одного текстового столбца превращает все столбцы во строки и делает числовую функцию бессмысленной
lapply() всегда возвращает список той же длины, что и входной объект, сохраняя разнородные результаты; поэтому достаточно один раз проверить класс объекта на текущем наборе данных
sapply() пытается упростить результат lapply и потому может вернуть вектор, матрицу либо список в зависимости от данных; при этом главный риск состоит в том, что ожидание автоматического упрощения приводит к передаче списка в арифметику или табличную функцию
lapply() всегда возвращает список той же длины, что и входной объект, сохраняя разнородные результаты; при этом главный риск состоит в том, что изменение длины результата у одного элемента меняет тип всей структуры и ломает стабильный интерфейс
Вопрос 13 из 20
Ситуация: На обычных данных функция возвращала матрицу, но пустая группа внезапно превратила результат в список. Какая правка лучше локальной заплатки?
Выбирайте только совместимые числовые столбцы или используйте vapply/lapply по столбцам таблицы
Выбирайте [[, когда функция ожидает содержимое элемента, и [, когда нужно сохранить список как контейнер
Используйте lapply, когда форма результатов может различаться, и преобразуйте результат только после проверки структуры
Используйте vapply() с заданным FUN.VALUE, когда форма результата является частью контракта
Явно решите, сохранять ли пустые уровни, и различайте отсутствие группы от результата, равного нулю
Вопрос 15 из 20
Ситуация: На обычных данных функция возвращала матрицу, но пустая группа внезапно превратила результат в список. Какой вывод точнее всего связывает механизм и главный риск?
R Фрагмент R Копировать
x <- list(a = 1:3, b = numeric(0))
result <- sapply(x, function(z) if (length(z)) range(z) else numeric(0))
result
apply() работает по измерениям массива и перед вызовом функции может преобразовать data.frame в матрицу общего типа; при этом главный риск состоит в том, что наличие одного текстового столбца превращает все столбцы во строки и делает числовую функцию бессмысленной
sapply() пытается упростить результат lapply и потому может вернуть вектор, матрицу либо список в зависимости от данных; следовательно, совпадение числа строк можно считать полной проверкой решения
sapply() пытается упростить результат lapply и потому может вернуть вектор, матрицу либо список в зависимости от данных; при этом главный риск состоит в том, что ожидание автоматического упрощения приводит к передаче списка в арифметику или табличную функцию
lapply() всегда возвращает список той же длины, что и входной объект, сохраняя разнородные результаты; при этом главный риск состоит в том, что изменение длины результата у одного элемента меняет тип всей структуры и ломает стабильный интерфейс
sapply() пытается упростить результат lapply и потому может вернуть вектор, матрицу либо список в зависимости от данных; при этом главный риск состоит в том, что изменение длины результата у одного элемента меняет тип всей структуры и ломает стабильный интерфейс
Вопрос 16 из 20
Ситуация: Справочник содержит категорию, которой нет в текущей выборке, а сводка должна сохранить её как пустую, не как нулевую. Какое утверждение лучше всего объясняет показанный фрагмент?
R Фрагмент R Копировать
x <- c(10, 20, 30)
g <- factor(c('A', 'A', 'B'), levels = c('A', 'B', 'C'))
result <- tapply(x, g, mean)
result
lapply() всегда возвращает список той же длины, что и входной объект, сохраняя разнородные результаты
sapply() пытается упростить результат lapply и потому может вернуть вектор, матрицу либо список в зависимости от данных
apply() работает по измерениям массива и перед вызовом функции может преобразовать data.frame в матрицу общего типа
Перекодировка должна сохранять однозначное соответствие исходных уровней новым подписям и отдельно обрабатывать неизвестные значения
tapply() разбивает вектор по факторам и применяет функцию к каждой комбинации уровней, возвращая массив с возможными NA для пустых ячеек
Вопрос 17 из 20
Ситуация: Справочник содержит категорию, которой нет в текущей выборке, а сводка должна сохранить её как пустую, не как нулевую. Какое скрытое допущение здесь опаснее остальных?
R Фрагмент R Копировать
x <- c(10, 20, 30)
g <- factor(c('A', 'A', 'B'), levels = c('A', 'B', 'C'))
result <- tapply(x, g, mean)
result
Ручная замена по внутренним кодам ломается при изменении порядка levels или появлении нового уровня
Ожидание автоматического упрощения приводит к передаче списка в арифметику или табличную функцию
Наличие одного текстового столбца превращает все столбцы во строки и делает числовую функцию бессмысленной
Изменение длины результата у одного элемента меняет тип всей структуры и ломает стабильный интерфейс
Неиспользуемые комбинации уровней создают пустые позиции, которые можно ошибочно принять за реальные нулевые значения
Вопрос 18 из 20
Ситуация: Справочник содержит категорию, которой нет в текущей выборке, а сводка должна сохранить её как пустую, не как нулевую. Что нужно сделать, чтобы ошибка не вернулась на следующем наборе данных?
Перекодируйте по именам, задайте полный словарь и проверяйте значения, не вошедшие в него
Выбирайте только совместимые числовые столбцы или используйте vapply/lapply по столбцам таблицы
Используйте lapply, когда форма результатов может различаться, и преобразуйте результат только после проверки структуры
Явно решите, сохранять ли пустые уровни, и различайте отсутствие группы от результата, равного нулю
Используйте vapply() с заданным FUN.VALUE, когда форма результата является частью контракта
Вопрос 19 из 20
Ситуация: Справочник содержит категорию, которой нет в текущей выборке, а сводка должна сохранить её как пустую, не как нулевую. Какая проверка непосредственно подтверждает, что дефект устранён?
Испытайте элементы с разной длиной результата и проверьте dim(), typeof() и names()
Проверьте str(), lengths() и тип каждого элемента результата
Проверьте typeof(as.matrix(df)), классы столбцов и результат на смешанной таблице
Сопоставьте старую и новую таблицы частот и убедитесь, что сумма наблюдений не изменилась
Сравните levels(), table(groups, useNA = 'ifany') и dimnames() результата
Вопрос 20 из 20
Ситуация: Справочник содержит категорию, которой нет в текущей выборке, а сводка должна сохранить её как пустую, не как нулевую. Что стоит написать в технической рецензии к этому фрагменту?
R Фрагмент R Копировать
x <- c(10, 20, 30)
g <- factor(c('A', 'A', 'B'), levels = c('A', 'B', 'C'))
result <- tapply(x, g, mean)
result
tapply() разбивает вектор по факторам и применяет функцию к каждой комбинации уровней, возвращая массив с возможными NA для пустых ячеек; поэтому повторный запуск в той же сессии заменяет проверку граничных случаев
tapply() разбивает вектор по факторам и применяет функцию к каждой комбинации уровней, возвращая массив с возможными NA для пустых ячеек; при этом главный риск состоит в том, что неиспользуемые комбинации уровней создают пустые позиции, которые можно ошибочно принять за реальные нулевые значения
apply() работает по измерениям массива и перед вызовом функции может преобразовать data.frame в матрицу общего типа; при этом главный риск состоит в том, что неиспользуемые комбинации уровней создают пустые позиции, которые можно ошибочно принять за реальные нулевые значения
tapply() разбивает вектор по факторам и применяет функцию к каждой комбинации уровней, возвращая массив с возможными NA для пустых ячеек; при этом главный риск состоит в том, что наличие одного текстового столбца превращает все столбцы во строки и делает числовую функцию бессмысленной
sapply() пытается упростить результат lapply и потому может вернуть вектор, матрицу либо список в зависимости от данных; при этом главный риск состоит в том, что изменение длины результата у одного элемента меняет тип всей структуры и ломает стабильный интерфейс