2010-08-02 4 views
16

Я включил библиотеку, названную blotter в моем R-скрипте, в которой есть ошибка. Есть ли простой способ изменить исходный код, чтобы попробовать и отладить проблему?Как редактировать и отлаживать источники библиотеки R

+1

Возможный дубликат [r изменить и перестроить пакет] (https://stackoverflow.com/questions/34800331/r-modify-and-rebuild-package) – Scarabee

ответ

16

Посмотрите на функции trace и browser, они являются основными инструментами в R для отладки. Допустим, вы хотите изменить источник функции foo, то говоря

trace("foo",edit=TRUE) 

откроет источник обув в редакторе для вас изменить. Однако это для интерактивной отладки; исходные файлы в пакетах не изменяются. Поэтому, как только вы обнаружили ошибку, вам нужно изменить исходные файлы пакета, чтобы изменения были постоянными.

+0

привет! Я загрузил пакет, и я знаю, какую функцию мне нужно редактировать - я просто не могу найти его среди всех файлов. Каков правильный способ сделать это? Не могли бы вы указать мне в правильном направлении? – vagabond

9

Такая возможность реализована в разрабатываемой версии R (16 июля 2010):

новый объект был добавлен г-разви для экспериментов авторами пакетов.

Идея состоит в том, чтобы вставить модифицированный код из источника пакета в рабочий пакет без повторной установки. Таким образом, можно быстро изменить, проверить, изменить, и т. Д.

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

Одношаговая версия:

insertSource("mySourceFile.R", package = "myPackage", functions = "foo")

Посмотреть этот пост для получения более подробной информации: Inserting and testing revised functions in a package

3

Ваш вопрос есть простой способ для меня, чтобы изменить источник на попробовать и отладить проблему? имеет очевидный ответ: используйте источник, Люк!

blotter - это пакет на R-Forge, откуда вы можете получить blotter sources here. Это стандартный способ взглянуть на Open Source и, возможно, помочь ему вместе с исправлением ошибок.

+1

Хорошо, как это сделать? Обычно я могу просто назвать «библиотеку», которая, как я предполагаю, не смогла бы сделать с источниками. Я загрузил источник, но есть почти 40 файлов. Я запускаю «источник» для каждого из них отдельно, чтобы получить их в свой скрипт? –

+3

@Ben McCann Предполагая, что нет кода C или FORTRAN, вы можете извлекать R-файлы, 'source()' them и работать оттуда (каждый раз, когда вы меняете файл, вы должны его загрузить или скопировать/вставить в R). После того, как все будет работать, вы можете скопировать файлы обратно в бинарный пакет и создать его. Я описал быстрое пошаговое построение пакета R в блоге: http://danganothererror.wordpress.com/2010/07/23/building-an-r-package-under-windows-without- cc-or-fortran-code/ –