Как просмотреть содержимое проанализированных функций R? - PullRequest
4 голосов
/ 13 октября 2009

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

Как говорит Джон Чамберс в своей превосходной книге «Программное обеспечение для анализа данных: программирование с использованием R» :

Вычисления организованы вокруг функций, которые могут инкапсулировать конкретные значимые результаты вычислений с реализациями, которые можно проверить на правильность.

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

> which
function (x, arr.ind = FALSE) 
{
    if (!is.logical(x)) 
        stop("argument to 'which' is not logical")
    wh <- seq_along(x)[x & !is.na(x)]
    dl <- dim(x)
...

У меня такой вопрос: как вы примерируете содержимое таких функций, как for() или if() без загрузки исходного кода R?

Редактировать: Кстати, я понимаю, что это не поможет при просмотре скомпилированного кода (такого как C, C ++ или Java), который может быть вызван из R. Мне действительно интересно, есть ли Функция R, которая выводит функции R.

Ответы [ 2 ]

5 голосов
/ 13 октября 2009

Как говорится: Используй источник, Люк!

Функции R могут быть видны в приглашении, но они по-прежнему анализируются, что означает удаление комментариев, изменение кода и т. Д. Поэтому я всегда обращался к источнику.

2 голосов
/ 14 октября 2009

Мне также нравится ходить к источнику по тем же причинам, которые упоминал Дирк, но для быстрой и грязной работы я также полагаюсь на подмножества:

getAnywhere(), getFromNameSpace(), THEPACKAGE:::thefn, getGeneric()

чтобы увидеть функции, которые не экспортируются пространством имен их пакета.

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