Почему вызов `detach` заставляет R" забыть "функции? - PullRequest
0 голосов
/ 25 октября 2018

Иногда я использую attach с некоторыми подмножествами для работы с нечетными измерениями данных исследования.Чтобы предотвратить «маскирование» переменных в среде (на самом деле, само предупреждение), я просто вызываю detach(), чтобы просто удалить любой набор данных, с которым я работал, из пути поиска R.Когда я запутался в написании сценариев, я могу несколько раз позвонить detach.Что ж, интересно, если я назову это достаточно, R удаляет функции, которые загружаются при запуске, как часть пакетов, таких как utils, stats и graphics.Почему «отсоединение» удаляет эти функции?

1 Ответ

0 голосов
/ 25 октября 2018

R удаляет базовые функции из пути поиска, например plot и ? и т. Д.

Эти функции, которые были удалены, часто называют «базовыми» функциями, но онине являются частью фактического ‹базового› пакета.Скорее, plot из пакета ‹graphics›, а ? из пакета ‹utils›, оба из которых являются частью *1000* R пакетов по умолчанию , и, следовательно, присоединяются по умолчанию.Оба пакета присоединяются после package:base, и вы случайно отсоединяете эти пакеты с помощью слишком большого числа вызовов detach (сам package:base 1016 * не может быть отсоединен; это важно, потому чтоесли бы он был отсоединен, вы не могли бы присоединить его снова: необходимые для этого функции находятся внутри package:base).

Чтобы расширить это, attach и detach являются обычно используется в сочетании со средами пакетов, а не с наборами данных: чтобы разрешить использование функций из пакета без явного ввода имени пакета (например, graphics::plot), функция library присоединяет эти пакеты.При загрузке R некоторые пакеты присоединяются по умолчанию.Вы можете найти больше информации об этом в Advanced R .

Хэдли Уикхэма. Как вы заметили, вы также можете присоединять и отсоединять наборы данных.Тем не менее, это, как правило, не рекомендуется (на самом деле довольно сильно).Вместо этого вы можете использовать функции преобразования данных из базового пакета (например, with и transform, как отмечено Moody_Mudskipper в комментарии) или из пакета манипулирования данными ( ‹dplyr› является современным уровнем техники).; альтернатива - ‹data.table› ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...