💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. Читайте код построчно, учитывайте типы, атрибуты, пропуски и допущения анализа. После завершения откроются общий процент, 4 тематических шкал и объяснение к каждому заданию.
Вопрос 1 из 20
Ситуация: После условной замены дат следующий шаг видит обычные числа, хотя печать значений ранее выглядела допустимо. Что является главным техническим основанием для разбора?
R Фрагмент R Копировать
d <- as.Date(c('2026-01-01', '2026-01-02'))
result <- ifelse(c(TRUE, FALSE), d, d + 10)
result
filter() оставляет строки, для которых условие равно TRUE; строки с FALSE и NA исключаются
ifelse() векторизует выбор и приводит ветви к совместимому типу, но может терять классы вроде Date при упрощении
Аргументы R вычисляются лениво, значения по умолчанию могут ссылаться на другие аргументы, а return не обязателен для последнего выражения
Цикл for перебирает значения последовательности, а while требует явного изменения состояния и корректного условия остановки
R использует лексическую область видимости: функция ищет свободные имена в окружении, где она была создана, а не где вызвана
Вопрос 5 из 20
Ситуация: После условной замены дат следующий шаг видит обычные числа, хотя печать значений ранее выглядела допустимо. Какое заключение останется верным и на новых данных?
R Фрагмент R Копировать
d <- as.Date(c('2026-01-01', '2026-01-02'))
result <- ifelse(c(TRUE, FALSE), d, d + 10)
result
Аргументы R вычисляются лениво, значения по умолчанию могут ссылаться на другие аргументы, а return не обязателен для последнего выражения; при этом главный риск состоит в том, что побочный эффект в аргументе может не выполниться, если функция никогда не обращается к этому аргументу
Цикл for перебирает значения последовательности, а while требует явного изменения состояния и корректного условия остановки; при этом главный риск состоит в том, что использование ifelse для объектов со специальным классом возвращает базовое представление и меняет дальнейшую семантику
ifelse() векторизует выбор и приводит ветви к совместимому типу, но может терять классы вроде Date при упрощении; при этом главный риск состоит в том, что конструкция 1:length(x) даёт нежелательную последовательность 1, 0 для пустого вектора и запускает тело дважды
ifelse() векторизует выбор и приводит ветви к совместимому типу, но может терять классы вроде Date при упрощении; при этом главный риск состоит в том, что использование ifelse для объектов со специальным классом возвращает базовое представление и меняет дальнейшую семантику
ifelse() векторизует выбор и приводит ветви к совместимому типу, но может терять классы вроде Date при упрощении; следовательно, предупреждения можно не учитывать, если итог выглядит ожидаемо
Вопрос 10 из 20
Ситуация: Скрипт редко получает пустой набор, и именно тогда журнал показывает две странные итерации. Какой итог разбора не смешивает правило языка с впечатлением от результата?
R Фрагмент R Копировать
x <- numeric(0)
result <- integer()
for (i in 1:length(x)) result <- c(result, i)
result
Цикл for перебирает значения последовательности, а while требует явного изменения состояния и корректного условия остановки; поэтому внешний вид напечатанного объекта важнее происхождения и структуры данных
Аргументы R вычисляются лениво, значения по умолчанию могут ссылаться на другие аргументы, а return не обязателен для последнего выражения; при этом главный риск состоит в том, что конструкция 1:length(x) даёт нежелательную последовательность 1, 0 для пустого вектора и запускает тело дважды
Цикл for перебирает значения последовательности, а while требует явного изменения состояния и корректного условия остановки; при этом главный риск состоит в том, что побочный эффект в аргументе может не выполниться, если функция никогда не обращается к этому аргументу
Цикл for перебирает значения последовательности, а while требует явного изменения состояния и корректного условия остановки; при этом главный риск состоит в том, что конструкция 1:length(x) даёт нежелательную последовательность 1, 0 для пустого вектора и запускает тело дважды
ifelse() векторизует выбор и приводит ветви к совместимому типу, но может терять классы вроде Date при упрощении; при этом главный риск состоит в том, что использование ifelse для объектов со специальным классом возвращает базовое представление и меняет дальнейшую семантику
Вопрос 11 из 20
Ситуация: Разработчик ожидает, что выражение в неиспользуемом аргументе обязательно запишет строку в журнал. Какое правило нужно применить к этому фрагменту прежде всего?
R Фрагмент R Копировать
f <- function(x, y = x * 2) y + 1
result <- f(3)
result
Пакет разделяет код, документацию, тесты и метаданные; функции в R/ загружаются в namespace, а не выполняются как обычный скрипт по порядку
Цикл for перебирает значения последовательности, а while требует явного изменения состояния и корректного условия остановки
ifelse() векторизует выбор и приводит ветви к совместимому типу, но может терять классы вроде Date при упрощении
Аргументы R вычисляются лениво, значения по умолчанию могут ссылаться на другие аргументы, а return не обязателен для последнего выражения
R использует лексическую область видимости: функция ищет свободные имена в окружении, где она была создана, а не где вызвана
Вопрос 15 из 20
Ситуация: Разработчик ожидает, что выражение в неиспользуемом аргументе обязательно запишет строку в журнал. Как сформулировать вывод без лишних обобщений?
R Фрагмент R Копировать
f <- function(x, y = x * 2) y + 1
result <- f(3)
result
Цикл for перебирает значения последовательности, а while требует явного изменения состояния и корректного условия остановки; при этом главный риск состоит в том, что побочный эффект в аргументе может не выполниться, если функция никогда не обращается к этому аргументу
Аргументы R вычисляются лениво, значения по умолчанию могут ссылаться на другие аргументы, а return не обязателен для последнего выражения; поэтому отсутствие сообщения об ошибке уже подтверждает корректность результата
Аргументы R вычисляются лениво, значения по умолчанию могут ссылаться на другие аргументы, а return не обязателен для последнего выражения; при этом главный риск состоит в том, что конструкция 1:length(x) даёт нежелательную последовательность 1, 0 для пустого вектора и запускает тело дважды
R использует лексическую область видимости: функция ищет свободные имена в окружении, где она была создана, а не где вызвана; при этом главный риск состоит в том, что изменение глобальной переменной после создания функции может менять результат, если значение не было зафиксировано в замыкании
Аргументы R вычисляются лениво, значения по умолчанию могут ссылаться на другие аргументы, а return не обязателен для последнего выражения; при этом главный риск состоит в том, что побочный эффект в аргументе может не выполниться, если функция никогда не обращается к этому аргументу
Вопрос 20 из 20
Ситуация: Расчёт использует глобальный коэффициент, и повторный запуск старого отчёта меняется после загрузки другого проекта. Какое заключение лучше всего выдерживает проверку?
R Фрагмент R Копировать
rate <- 2
f <- function(x) x * rate
rate <- 3
result <- f(10)
result
Цикл for перебирает значения последовательности, а while требует явного изменения состояния и корректного условия остановки; при этом главный риск состоит в том, что конструкция 1:length(x) даёт нежелательную последовательность 1, 0 для пустого вектора и запускает тело дважды
R использует лексическую область видимости: функция ищет свободные имена в окружении, где она была создана, а не где вызвана; поэтому достаточно один раз проверить класс объекта на текущем наборе данных
R использует лексическую область видимости: функция ищет свободные имена в окружении, где она была создана, а не где вызвана; при этом главный риск состоит в том, что побочный эффект в аргументе может не выполниться, если функция никогда не обращается к этому аргументу
Аргументы R вычисляются лениво, значения по умолчанию могут ссылаться на другие аргументы, а return не обязателен для последнего выражения; при этом главный риск состоит в том, что изменение глобальной переменной после создания функции может менять результат, если значение не было зафиксировано в замыкании
R использует лексическую область видимости: функция ищет свободные имена в окружении, где она была создана, а не где вызвана; при этом главный риск состоит в том, что изменение глобальной переменной после создания функции может менять результат, если значение не было зафиксировано в замыкании