Поиск того, что вам нужно в R: сфокусированный поиск в R и во всех (более 3500) CRAN-пакетах

StackOverflow https://stackoverflow.com/questions/1812702

  •  06-07-2019
  •  | 
  •  

Вопрос

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

Как вы находите их - изнутри R и даже из пакетов CRAN, которые вы не установили?

Так, например: общая функция plot . Установить вторичные галочки гораздо проще, используя функцию снаружи базового пакета:

minor.tick(nx=n, ny=n, tick.ratio=n)

Конечно, plot находится в ядре R, но minor.tick нет, на самом деле он находится в Hmisc .

Конечно, этого нет в документации по plot , и вы не должны этого ожидать.

Другой пример: аргументы ввода данных в plot могут быть предоставлены объектом, возвращенным из функции hexbin , опять же, эта функция из библиотеки снаружи из R ядра.

Что было бы замечательно, так это программный способ собрать эти аргументы функций из различных библиотек и поместить их в одно пространство имен?

* edit: (пытаясь более четко изложить мой пример чуть выше :) аргументы для plot , предоставленные в ядре R, например, для установки частоты тиков оси, являются xaxp / yaxp; однако, можно также установить / t / f через функцию вне базового пакета, опять же, как в функции minor.tick из пакета Hmisc - но вы не узнаете об этом, просто взглянув на сигнатуру метода plot , Есть ли в R мета-функция для этого? *

Пока я сталкивался с ними, я собирал их вручную, каждый набор собирался в один TextMate сниппет (вместе с импортом сопутствующей библиотеки) , Это не так сложно и не занимает много времени, но я могу только обновить мой фрагмент, когда узнаю об этих дополнительных аргументах / параметрах. Есть ли канонический R способ сделать это или, по крайней мере, более простой способ?

На всякий случай неясно, я не говорю о случае, когда несколько пакетов предоставляют функции, направленные на одну и ту же статистику или представление (например, «boxplot» в базовом пакете; «boxplot.matrix» в gplots; и «bplots» в Rlab). Я имею в виду случай, когда имя функции одинаково для двух или более пакетов.

Это было полезно?

Решение

" sos " Пакет является отличным ресурсом. Его основным интерфейсом является " findFn " команда, которая принимает строку (ваш поисковый термин) и просматривает функцию " function " записей в поисковой базе данных сайта Джонатана Барона и возвращает записи, которые содержат искомый термин во фрейме данных (класса " findFn ").

Столбцы этого фрейма данных: Количество , MaxScore , TotalScore , Пакет , Функция , Дата , Оценка , Описание и Ссылка . Нажмите на ссылку "Ссылка". в строке любой записи сразу же откроется страница справки.

Пример: предположим, что вы хотите найти все фильтры свертки во всех 1800+ пакетах R.

library(sos)
cf = findFn("convolve") 

Этот запрос будет выглядеть как термин «свернуть», другими словами, он не обязательно должен быть именем функции.

Вводить " cf " возвращает таблицу HTML всех найденных совпадений (в нашем случае 23). Эта таблица представляет собой HTML-рендеринг фрейма данных, о котором я упоминал выше. Что особенно удобно, так это то, что каждый столбец («Количество», «MaxScore» и т. Д.) Можно сортировать, нажимая на заголовок столбца, поэтому вы можете просматривать результаты по «Оценка», по «Имя пакета», и др.

(Кроме того: при выполнении этого точного запроса одним из результатов была функция "panel.tskernel" в пакете с именем "latticeExtra". Я не знал, что в этом пакете есть фильтры временных рядов, и я сомневаюсь, что открыл бы это иначе.

Другие советы

На ваш вопрос нелегко ответить. Нет ни одной определенной функции.

formals - это функция, которая передает аргументы named функции и их значения по умолчанию в именованном списке, но вы всегда можете иметь переменные аргументы через . .. и скрытые именованные аргументы со встроенной функцией hadArg . Чтобы получить список тех, вы должны использовать getAnywhere, а затем отсканировать выражение для hasArg. Я не могу придумать автоматический способ сделать это самостоятельно. Это если функции скрытых аргументов не документированы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top