Я собираю пакет R. Я хотел бы показать пример кода в виньетке, где примерные файлы данных (включенные в пакет) используются для создания выходного файла (пример).
Я читал об использовании данных примера в сообщении Хэдли Уикхэма (http://r-pkgs.had.co.nz/data.html), и считаю, что я должен хранить данные моего примера как сырые данные, поскольку он должен быть проанализирован для генерации вывода.
Итак, я создал каталог в моей структуре пакета
/Users/userName/myPackage/inst/extdata/
с подкаталогами InputFiles и OutputFiles.
И я помещаю пример файла (exampleData.csv) внутри подкаталога InputFiles (/Users/userName/myPackage/inst/extdata/InputFiles).
Моя виньетка расположена в:
/Users/userName/myPackage/vignettes/myPackage.Rnw
Он содержит следующий синтаксис:
<<eval=FALSE>>=
fileString = "/Users/userName/myPackage/inst/extdata/InputFiles/exampleData.csv"
doFunction1(fileString)
doFunction2(fileString)
doFunction3(fileString, output ="Users/userName/myPackage/inst/extdata/OutputFiles")
@
У меня возникают две проблемы с разработкой этой виньетки и ее примерных наборов данных:
1) Я не уверен, подходит ли мое использование файла extdata. Это, по-видимому, лучшее имя и местоположение каталога для размещения моих файлов примеров в соответствии с вышеупомянутой ссылкой Хэдли Уикхема.
2) Я не уверен, как сделать пути относительными, а не абсолютными, поскольку у меня есть их в настоящее время. Этот примерный код не запускается автоматически, как вы можете видеть. Вместо этого я использую его под фрагментом R eval = FALSE, чтобы он просто был указан там, чтобы пользователи могли сами себя протестировать. После запуска кода примера пользователи также могут проверить, действительно ли был создан выходной файл (/Users/userName/myPackage/inst/extdata/OutputFiles). Каков наилучший способ для меня позволить пользователю не использовать абсолютный путь, следуя примеру? Можно ли просто следовать относительному пути из каталога пакетов myPackage?
Мои файлы данных состоят из файлов .csv,.htm и .text. В прошлом при создании пакета я сохранил фрейм данных как файл .rda, а затем пользователь мог просто использовать:
data(example.rda)
чтобы прочитать этот файл. Им не пришлось бы писать весь путь. Есть ли аналогичная функция, которая может использоваться для чтения файлов .csv,.html и .text, а затем выводить их в примерное местоположение вывода - без использования полного пути? Можно ли иметь вспомогательные функции, которые также читаются во входных файлах и записываются в выходные файлы? Повлияет ли это на конфликт в CRAN, если различные справочные функции в папке /man физически сохраняют выходной файл примера в примерную папку вывода?