💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. Читайте код построчно, учитывайте типы, атрибуты, пропуски и допущения анализа. После завершения откроются общий процент, 6 тематических шкал и объяснение к каждому заданию.
Вопрос 5 из 30
Ситуация: После добавления библиотеки фильтрации временных рядов привычный filter для таблиц перестал работать. Какое заключение останется верным и на новых данных?
R Фрагмент R Копировать
library(stats)
result <- find('filter')
result
library(pkg) прикрепляет экспортированные имена пакета к пути поиска, а конфликт одинаковых функций зависит от порядка прикрепления; при этом главный риск состоит в том, что скрипт вызывает filter() без пространства имён и получает другую функцию после подключения нового пакета
library(pkg) прикрепляет экспортированные имена пакета к пути поиска, а конфликт одинаковых функций зависит от порядка прикрепления; при этом главный риск состоит в том, что доступ через ::: к внутренней функции связывает код с недокументированным интерфейсом, который может исчезнуть
namespace определяет импорт и экспорт имён пакета; pkg::fun обращается к экспортированной функции без прикрепления пакета; при этом главный риск состоит в том, что скрипт вызывает filter() без пространства имён и получает другую функцию после подключения нового пакета
library(pkg) прикрепляет экспортированные имена пакета к пути поиска, а конфликт одинаковых функций зависит от порядка прикрепления; следовательно, предупреждения можно не учитывать, если итог выглядит ожидаемо
Надёжность пакета зависит от объявленных зависимостей, минимальных версий, чистого namespace и отсутствия скрытой глобальной среды; при этом главный риск состоит в том, что код работает в интерактивной сессии только потому, что нужный пакет уже подключён или объект лежит в .GlobalEnv
Вопрос 10 из 30
Ситуация: Проект вызывает внутреннюю функцию зависимости через тройное двоеточие, и обновление пакета ломает выпуск. Какой итог разбора не смешивает правило языка с впечатлением от результата?
R Фрагмент R Копировать
result <- getNamespaceExports('stats')
head(result)
Надёжность пакета зависит от объявленных зависимостей, минимальных версий, чистого namespace и отсутствия скрытой глобальной среды; при этом главный риск состоит в том, что код работает в интерактивной сессии только потому, что нужный пакет уже подключён или объект лежит в .GlobalEnv
namespace определяет импорт и экспорт имён пакета; pkg::fun обращается к экспортированной функции без прикрепления пакета; при этом главный риск состоит в том, что скрипт вызывает filter() без пространства имён и получает другую функцию после подключения нового пакета
namespace определяет импорт и экспорт имён пакета; pkg::fun обращается к экспортированной функции без прикрепления пакета; поэтому внешний вид напечатанного объекта важнее происхождения и структуры данных
namespace определяет импорт и экспорт имён пакета; pkg::fun обращается к экспортированной функции без прикрепления пакета; при этом главный риск состоит в том, что доступ через ::: к внутренней функции связывает код с недокументированным интерфейсом, который может исчезнуть
library(pkg) прикрепляет экспортированные имена пакета к пути поиска, а конфликт одинаковых функций зависит от порядка прикрепления; при этом главный риск состоит в том, что доступ через ::: к внутренней функции связывает код с недокументированным интерфейсом, который может исчезнуть
Вопрос 15 из 30
Ситуация: Кэш передают двум компонентам как окружение, и изменение одной компоненты неожиданно влияет на другую. Как сформулировать вывод без лишних обобщений?
R Фрагмент R Копировать
e1 <- new.env(); e1$x <- 1
e2 <- e1; e2$x <- 2
result <- e1$x
result
environment хранит пары имя-значение с ссылочной семантикой и цепочкой родительских окружений; при этом главный риск состоит в том, что изменение окружения через одну ссылку видно всем функциям, которые держат ту же ссылку, в отличие от обычного копирования списка
library(pkg) прикрепляет экспортированные имена пакета к пути поиска, а конфликт одинаковых функций зависит от порядка прикрепления; при этом главный риск состоит в том, что скрипт вызывает filter() без пространства имён и получает другую функцию после подключения нового пакета
environment хранит пары имя-значение с ссылочной семантикой и цепочкой родительских окружений; при этом главный риск состоит в том, что доступ через ::: к внутренней функции связывает код с недокументированным интерфейсом, который может исчезнуть
environment хранит пары имя-значение с ссылочной семантикой и цепочкой родительских окружений; поэтому отсутствие сообщения об ошибке уже подтверждает корректность результата
namespace определяет импорт и экспорт имён пакета; pkg::fun обращается к экспортированной функции без прикрепления пакета; при этом главный риск состоит в том, что изменение окружения через одну ссылку видно всем функциям, которые держат ту же ссылку, в отличие от обычного копирования списка
Вопрос 20 из 30
Ситуация: Пакет при library() создаёт файл в текущем каталоге и читает локальную конфигурацию пользователя. Какое заключение лучше всего выдерживает проверку?
R Фрагмент R Копировать
result <- list(description=file.exists('DESCRIPTION'), namespace=file.exists('NAMESPACE'), tests=dir.exists('tests/testthat'))
result
Пакет разделяет код, документацию, тесты и метаданные; функции в R/ загружаются в namespace, а не выполняются как обычный скрипт по порядку; при этом главный риск состоит в том, что код работает в интерактивной сессии только потому, что нужный пакет уже подключён или объект лежит в .GlobalEnv
Надёжность пакета зависит от объявленных зависимостей, минимальных версий, чистого namespace и отсутствия скрытой глобальной среды; при этом главный риск состоит в том, что побочные эффекты на верхнем уровне файла R/ выполняются при установке или загрузке и делают пакет непредсказуемым
namespace определяет импорт и экспорт имён пакета; pkg::fun обращается к экспортированной функции без прикрепления пакета; при этом главный риск состоит в том, что доступ через ::: к внутренней функции связывает код с недокументированным интерфейсом, который может исчезнуть
Пакет разделяет код, документацию, тесты и метаданные; функции в R/ загружаются в namespace, а не выполняются как обычный скрипт по порядку; поэтому достаточно один раз проверить класс объекта на текущем наборе данных
Пакет разделяет код, документацию, тесты и метаданные; функции в R/ загружаются в namespace, а не выполняются как обычный скрипт по порядку; при этом главный риск состоит в том, что побочные эффекты на верхнем уровне файла R/ выполняются при установке или загрузке и делают пакет непредсказуемым
Вопрос 25 из 30
Ситуация: На компьютере автора тесты проходят, а в непрерывной сборке функции и данные «не найдены». Какой вывод точнее всего связывает механизм и главный риск?
R Фрагмент R Копировать
result <- list(search=search(), global=ls(.GlobalEnv))
result
Надёжность пакета зависит от объявленных зависимостей, минимальных версий, чистого namespace и отсутствия скрытой глобальной среды; при этом главный риск состоит в том, что код работает в интерактивной сессии только потому, что нужный пакет уже подключён или объект лежит в .GlobalEnv
Пакет разделяет код, документацию, тесты и метаданные; функции в R/ загружаются в namespace, а не выполняются как обычный скрипт по порядку; при этом главный риск состоит в том, что побочные эффекты на верхнем уровне файла R/ выполняются при установке или загрузке и делают пакет непредсказуемым
namespace определяет импорт и экспорт имён пакета; pkg::fun обращается к экспортированной функции без прикрепления пакета; при этом главный риск состоит в том, что код работает в интерактивной сессии только потому, что нужный пакет уже подключён или объект лежит в .GlobalEnv
Надёжность пакета зависит от объявленных зависимостей, минимальных версий, чистого namespace и отсутствия скрытой глобальной среды; следовательно, совпадение числа строк можно считать полной проверкой решения
Надёжность пакета зависит от объявленных зависимостей, минимальных версий, чистого namespace и отсутствия скрытой глобальной среды; при этом главный риск состоит в том, что доступ через ::: к внутренней функции связывает код с недокументированным интерфейсом, который может исчезнуть
Вопрос 30 из 30
Ситуация: Анализ невозможно повторить: известно название пакета, но не его версия и не версия R. Что стоит написать в технической рецензии к этому фрагменту?
R Фрагмент R Копировать
result <- sessionInfo()
result
Воспроизводимое окружение фиксирует версии R и пакетов, системные зависимости и источник репозиториев; при этом главный риск состоит в том, что доступ через ::: к внутренней функции связывает код с недокументированным интерфейсом, который может исчезнуть
library(pkg) прикрепляет экспортированные имена пакета к пути поиска, а конфликт одинаковых функций зависит от порядка прикрепления; при этом главный риск состоит в том, что скрипт вызывает filter() без пространства имён и получает другую функцию после подключения нового пакета
Воспроизводимое окружение фиксирует версии R и пакетов, системные зависимости и источник репозиториев; при этом главный риск состоит в том, что обычный список install.packages без версий через месяц устанавливает другой набор кода
namespace определяет импорт и экспорт имён пакета; pkg::fun обращается к экспортированной функции без прикрепления пакета; при этом главный риск состоит в том, что обычный список install.packages без версий через месяц устанавливает другой набор кода
Воспроизводимое окружение фиксирует версии R и пакетов, системные зависимости и источник репозиториев; поэтому повторный запуск в той же сессии заменяет проверку граничных случаев