Подтвердить что ты не робот

Inst и extdata в R Packaging

В документации R предполагает, что необработанные файлы данных (а не Rdata или Rda) должны быть помещены в inst/extdata/

Из первого абзаца в: http://cran.r-project.org/doc/manuals/R-exts.html#Data-in-packages

Подкаталог данных предназначен для файлов данных, которые должны быть доступны через ленивую загрузку или для загрузки с использованием данных(). (Выбор сделан поле "LazyData" в файле DESCRIPTION: по умолчанию не нужно делать поэтому.) Он не должен использоваться для других файлов данных, необходимых для пакета, и соглашение выросло, чтобы использовать каталог inst/extdata для таких файлы.

Итак, я переместил все свои исходные данные в эту папку, но когда я создаю и перезагружаю пакет, а затем пытаюсь получить доступ к данным в функции с (например):

read.csv(file=paste(path.package("my_package"),"/inst/extdata/my_raw_data.csv",sep="")) 
# .path.package is now path.package in R 3.0+

Я получаю ошибку "не могу открыть файл".

Однако, похоже, что существует папка с именем /extdata в каталоге пакета с файлами в ней (после сборки и установки). Что происходит с папкой /inst?

Все ли в папке /inst вставляется в / пакета?

4b9b3361

Ответ 1

Вы были очень близки и по существу имели это. Формальная ссылка из "Написание R-расширений":

1.1.3 Папки подкаталогов

[...]

Содержимое подкаталога inst будет скопировано рекурсивно в каталог установки. Подкаталоги inst не должны помешать тем, которые используются R (в настоящее время R, data, demo, exec, libs, man, help, html и Meta и более ранних версиях используется latex, R-ex). Копирование inst происходит после src, поэтому его Makefile может создавать файлы для установки. До R 2.12.2, файлы были установлены на платформах POSIX с разрешениями в источниках пакетов, поэтому следует соблюдать осторожность, чтобы обеспечить они не слишком ограничительны: R CMD build сделает подходящий Корректировки. Чтобы исключить установленные файлы, можно указать список исключаемых шаблонов в файле .Rinstignore на верхнем уровне исходный каталог. Эти шаблоны должны быть Perl-подобными регулярными (см. справку regexp в R для точных деталей), по одной на линию, для соответствия (10) по пути файла и каталога, например doc/.*[.]png$ исключает все PNG файлы в inst/doc на основе (нижний регистр).

Ответ 2

Более полезным, чем использование file.path, было бы использовать system.file. Как только ваш пакет установлен, вы можете захватить свой файл следующим образом:

fpath <- system.file("extdata", "my_raw_data.csv", package="my_package")

fpath теперь будет иметь абсолютный путь на вашем HD в файл.