2012-11-19 11 views
31

Nella documentazione, R suggerisce che i file di dati grezzi (non RDATA né RDA) dovrebbero essere messi in inst/extdata/inst e cartelle extdata in R Imballaggio

Dal primo paragrafo: http://cran.r-project.org/doc/manuals/R-exts.html#Data-in-packages

I dati sottodirectory è per i file di dati, da rendere disponibili tramite lazy-loading o per il caricamento tramite data(). (La scelta viene effettuata da nel campo "LazyData" nel file DESCRIPTION: l'impostazione predefinita non è così.) Non deve essere utilizzato per altri file di dati necessari al pacchetto, e la convenzione è cresciuta per utilizzare directory inst/extdata per tali file .

Così, ho spostato tutti i miei dati grezzi in questa cartella, ma quando ho costruire e ricaricare il pacchetto e poi cercare di accedere ai dati in una funzione con (per esempio):

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+ 

Viene visualizzato l'errore "Impossibile aprire il file".

Tuttavia, sembra che esista una cartella denominata /extdata nella directory del pacchetto con i file in essa contenuti (post-generazione e installazione). Cosa sta succedendo alla cartella /inst?

Tutto nella cartella/inst viene inserito nel pacchetto /?

+0

Tutte le cartelle nella cartella/inst ottenere il loro posto nella top directory del pacchetto. Fondamentalmente, tutto in/inst finisce nella top directory in modo tale che tutte le cartelle in esso finiscano come proprie cartelle. Ma questo è solo dall'esperienza e non riesco a trovare nulla in exts R che spiega che ... – Dason

+1

mi limiterò a aggiungere che preferisco file.path per la creazione di un percorso di un file – Dason

risposta

21

Eravate entrambi molto vicini e in sostanza lo avete avuto. Un riferimento formale da parte 'di scrittura R Extensions' è:

1.1.3 sottodirectory della confezione

[...]

Il contenuto del inst sottodirectory verranno copiati in modo ricorsivo alla directory di installazione . Sottodirectory di inst non dovrebbero interferire con quelli utilizzati da R (attualmente, R, data, demo, exec, libs, man, help, html e Meta, e le versioni precedenti usati latex, R-ex). La copia dello inst avviene dopo src è stata creata in modo che il suo Makefile possa creare file da installare. Prima di R 2.12.2, i file sono stati installati su piattaforme POSIX con le autorizzazioni nelle origini del pacchetto, pertanto è necessario prestare attenzione per garantire che non siano troppo restrittivi: R CMD build regolerà le regolazioni appropriate. Per escludere i file dall'installazione, è possibile specificare un elenco di modelli di esclusione nel file .Rinstignore nella directory di origine di livello superiore . Questi pattern dovrebbero essere espressioni regolari (vedere la guida per regexp in R per i dettagli precisi), uno per riga, da abbinare (10) ai percorsi file e directory, ad es. doc/.*[.]png$ escluderà tutti i file PNG in inst/doc in base a l'estensione (minuscolo).

+0

Grazie per questo. Stavo diventando cieco cercando di cercare "inst" nel documento. –

44

Più utile dell'utilizzo di file.path sarebbe utilizzare system.file. Una volta che il pacchetto è installato, si può afferrare il file in questo modo:

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

fpath avranno ora il percorso assoluto sul vostro HD per il file.

+2

+1 Utile, grazie. –