Как создать пакет R, который содержит только набор данных? - PullRequest
0 голосов
/ 22 мая 2018

Я ищу самый простой способ создания пакета R, который должен содержать только один набор данных.

Предположим, мой набор данных (скажем, dplyr dataframe) записывается на диск как .rds(или живет в текущем сеансе).Есть ли способ поместить его в R пакет без необходимости устанавливать rtools и другие?Это можно сделать программно?

Идея в том, что этот пакет будет создаваться заново каждый раз, когда я запускаю какой-то другой код.Тогда я мог бы отправить этот набор данных в другие программы.

Еще раз спасибо!

1 Ответ

0 голосов
/ 22 мая 2018

Я написал пакет только для данных - https://github.com/nfultz/ec2instances.info/blob/master/R/ec2instances.R

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

В качестве альтернативы,Вы можете просто использовать package.skeleton, чтобы сделать пустой пакет.Вы должны отредактировать файлы справки, но вместо этого я использовал sed:

> foo <- iris
> package.skeleton("irispkg", "foo")
Creating directories ...
Creating DESCRIPTION ...
Creating NAMESPACE ...
Creating Read-and-delete-me ...
Saving functions and data ...
Making help files ...
Done.
Further steps are described in './irispkg/Read-and-delete-me'.
> system("sed -i 's/^%%//' irispkg/man/foo.Rd")
> system("R CMD build irispkg")
* checking for file 'irispkg/DESCRIPTION' ... OK
* preparing 'irispkg':
* checking DESCRIPTION meta-information ... OK
* installing the package to process help pages
* saving partial Rd database
* checking for LF line-endings in source and make files and shell scripts
* checking for empty or unneeded directories
* looking to see if a 'data/datalist' file should be added
* building 'irispkg_1.0.tar.gz'

> install.packages("./irispkg_1.0.tar.gz", repos=NULL)
Installing package into '/home/neal/R/x86_64-pc-linux-gnu-library/3.4'
(as 'lib' is unspecified)
* installing *source* package 'irispkg' ...
** data
** help
Warning: /tmp/RtmpW8T900/Rbuild8c0136c3b349/irispkg/man/irispkg-package.Rd:27: All text must be in a section
Warning: /tmp/RtmpW8T900/Rbuild8c0136c3b349/irispkg/man/irispkg-package.Rd:28: All text must be in a section
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (irispkg)

, проверьте, что он работает:

> require(irispkg)
Loading required package: irispkg
> data(foo)
> head(foo)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...