Dans la documentation, R suggère que les fichiers de données brutes (pas Rdata ni Rda) soient placés dans inst/extdata/
Du premier paragraphe de: http://cran.r-project.org/doc/manuals/R-exts.html#Data-in-packages
Le sous-répertoire de données est destiné aux fichiers de données, à mettre à disposition via le chargement différé ou à charger à l'aide de data (). (Le choix est fait par le champ 'LazyData' dans le fichier DESCRIPTION: la valeur par défaut est de ne pas le faire.) Il ne doit pas être utilisé pour les autres fichiers de données nécessaires au package, et la convention a grandi pour utiliser le répertoire inst/extdata pour ces fichiers.
J'ai donc déplacé toutes mes données brutes dans ce dossier, mais lorsque je crée et recharge le package, puis j'essaie d'accéder aux données dans une fonction avec (par exemple):
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+
J'obtiens l'erreur "impossible d'ouvrir le fichier".
Cependant, il semble qu'il existe un dossier appelé /extdata
dans le répertoire du package avec les fichiers qu'il contient (post-construction et installation). Qu'arrive-t-il au /inst
dossier?
Est-ce que tout dans le dossier/inst est poussé dans le /
du colis?
Vous étiez tous les deux très proches et aviez essentiellement cela. Une référence formelle de "Writing R Extensions" est:
1.1.3 Sous-répertoires de packages
[...]
Le contenu du sous-répertoire
inst
sera copié récursivement dans le répertoire d'installation. Les sous-répertoires deinst
ne doivent pas interférer avec ceux utilisés par R (actuellement,R
,data
,demo
,exec
,libs
,man
,help
,html
etMeta
, et les versions antérieures utilisaientlatex
,R-ex
). La copie deinst
se produit après quesrc
est construit afin que sonMakefile
puisse créer des fichiers à installer. Avant la version R 2.12.2, les fichiers étaient installés sur les plates-formes POSIX avec les autorisations dans les sources du package, il faut donc veiller à ce qu'ils ne soient pas trop restrictifs:R CMD build
fera les ajustements appropriés. Pour exclure les fichiers de l'installation, on peut spécifier une liste de motifs d'exclusion dans le fichier.Rinstignore
dans le répertoire source de niveau supérieur. Ces modèles doivent être des expressions régulières de type Perl (voir l'aide deregexp
dans R pour les détails précis), une par ligne, à mettre en correspondance (10) avec les chemins de fichier et de répertoire, par ex.doc/.*[.]png$
exclura tous les fichiers PNG dansinst/doc
basé sur l'extension (en minuscules).
Plus utile que d'utiliser file.path
serait d'utiliser system.file
. Une fois votre package installé, vous pouvez récupérer votre fichier comme suit:
fpath <- system.file("extdata", "my_raw_data.csv", package="my_package")
fpath
aura désormais le chemin absolu sur votre disque dur vers le fichier.