Скрытие имен функций от результатов ls () - чтобы быстрее найти имя переменной
==============================================================================

Когда мы определили десятки функций - возможно, для разработки нового пакета - трудно найти имя конкретной переменной среди многих имен функций через`ls()` команда.

В большинстве случаев мы не ищем имя функции - мы уже знаем, что они существуют - но мы хотим найти, какое имя мы присвоили переменной.

Любая идея, чтобы решить это высоко ценится.

 чтобы функция делала это, вам нужно немного поиграться с окружением, которое`ls()` выглядит в обычном использовании, реализация ниже будет работать путем перечисления объектов в родительском фрейме функции, которая будет глобальной средой, если вызывается на верхнем уровне.

Я написал это, чтобы вы могли пройти в`name` аргумент`ls()` если вам нужно вызвать этот путь вниз в серии вложенных вызовов функций.

Обратите внимание, что нам нужно`get()` объекты, названные`ls()` когда мы проверяем, являются ли они функцией или нет.



 вы просто хотите имена переменных, а не функции? Это сделает это.



Так что возможно

Джош О'Брайен предложил использовать

Эта функция после некоторых преобразований и проверок вызывает

что довольно близко к тому, что я предложил в первую очередь, но хорошо упаковано в функцию`setdiff`.



 чтобы сортировать объекты в вашей глобальной среде и пытаться отделить объекты данных от функций, было бы лучше хранить функции в другой среде, чтобы`ls()` не перечисляет их (по умолчанию он только перечисляет вещи в глобальной среде). Но они все еще доступны и могут быть перечислены при желании.

Лучший способ сделать это - создать пакет с функциями в нем. Это не так сложно, как иногда кажется, просто используйте`package.skeleton` начать.

Другой альтернативой является использование`save` функция, чтобы сохранить все ваши функции в файл, удалить их из глобальной среды, а затем использовать`attach` функция, чтобы прикрепить этот файл (и, следовательно, все функции) к пути поиска.



Я держу эту функцию в моем`.rprofile`, Я не пользуюсь им часто, но замечательно, когда в моей глобальной среде есть несколько сред, функций и объектов. Ясно, что это не так элегантно, как решение BenBarnes, но мне никогда не нужно запоминать синтаксис, и я могу просто вызвать`lsa()` по мере необходимости. Это также позволяет мне перечислить конкретные среды. например`lsa(e)`



Следующая функция`lsos` был ранее размещен на stackoverflow ([ссылка](https://stackoverflow.com/questions/1358003/tricks-to-manage-the-available-memory-in-an-r-session)) - это дает хорошее упорядочение объектов, загруженных в вашу сессию R, в зависимости от их размера. Выходные данные функции содержат класс объекта, который вы можете впоследствии отфильтровать, чтобы получить нефункциональные объекты.

Это возвращает:

Или, с фильтром, функция`F` не возвращается: