2015-10-21 10 views
12

Bir R paketini bir araya getiriyorum. Vatette örnek kodu göstermek istiyorum; örnek veri dosyaları (pakette bulunan) bir (örnek) çıktı dosyası oluşturmak için kullanılır.Örnek giriş verileri, R paketinin vinyetindeki göreli yol kullanılarak örnek çıktıyla mı?

Hadley Wickham'ın gönderisinde (http://r-pkgs.had.co.nz/data.html) örnek verileri kullanmayı okudum ve örnek verimi ham çıktı olarak tutmam gerektiğine inanıyorum, çünkü çıktıyı üretmek için ayrıştırılmalıdır.

Yani, benim paket yapısı alt dizinleri InputFiles ve OutputFiles ile

/Users/userName/myPackage/inst/extdata/ 

bir dizin oluşturduk.

Ve örnek dosyasını (exampleData.csv) InputFiles alt dizininin içine koydum (/ Users/userName/myPackage/inst/extdata/InputFiles).

Benim vinyet bulunur

:

<<eval=FALSE>>= 
fileString = "/Users/userName/myPackage/inst/extdata/InputFiles/exampleData.csv" 
doFunction1(fileString) 
doFunction2(fileString) 
doFunction3(fileString, output ="Users/userName/myPackage/inst/extdata/OutputFiles") 
@ 

İki bu vinyet gelişmekte olan sorunları ve örnek veri kümeleri yaşıyorum:

1)

/Users/userName/myPackage/vignettes/myPackage.Rnw 

Aşağıdaki sözdizimi içeriyor Extdata dosyasının kullanımının uygun olup olmadığından emin değilim. Bu, yukarıda bahsedilen Hadley Wickham referansına göre örnek dosyamı yerleştirmek için en iyi dizin adı ve yeri gibi görünüyordu.

2) Şu anda olduğu gibi yolları mutlak yerine göreceli olarak nasıl yapacağımdan emin değilim. Bu örnek kod, gördüğünüz gibi otomatik olarak çalışmaz. Bunun yerine, kullanıcıların kendilerini sınamaları için orada listelenecek şekilde, = FALSE değerine sahip bir alt kümeye sahibim. Örnek kodu çalıştırdıktan sonra, kullanıcılar çıkış dosyasının gerçekten de (/ Users/userName/myPackage/inst/extdata/OutputFiles) içinde oluşturulduğunu kontrol edebilirler. Kullanıcının örneği takip ederken mutlak bir yol kullanmasına izin vermeme izin vermenin en iyi yolu nedir? Paket dizini myPackage içinden göreceli bir yolu takip etmek mümkün mü?

Veri dosyam .csv, .htm ve .text dosyalarından oluşur. Bir paket oluştururken Geçmişte, ben .rda dosyası olarak bir veri çerçevesi kaydetmiş ve sonra kullanıcı basitçe kullanabilirsiniz:

data(example.rda) 

bu dosyayı okumak için. Tüm yolu yazmaları gerekmeyecek. .csv, .html ve .text dosyalarını okumak için kullanılabilecek benzer bir işlev var mı ve daha sonra bunları bir tam çıkış yolunu kullanmak zorunda kalmadan bir örnek çıktı konumuna çıktılar mı? Giriş dosyalarında okuyan ve çıktı dosyalarına yazılan yardım işlevlerine sahip olmak mümkün mü? Eğer/man klasöründeki çeşitli örnek yardım fonksiyonları örnek çıktı dosyasını fiziksel olarak örnek çıktı dosyasına kaydederse, bu durum CRAN'da bir çatışmaya neden olur mu?

cevap

8

bir pakette bir dosyaya başvurmak için standart yolu şudur: Mutlak yollar hakkında endişelenmenize gerek asla

# gives root package directory 
system.file(package="myPackage") 

# specific file 
system.file("extdata/InputFiles/exampleData.csv", package="myPackage") 

# best is to use cross-platform way to write a file path: 
system.file("extdata", "InputFiles", "exampleData.csv", package="myPackage") 

devtools ile gelişen, inst alt dizin yok sayılır. Bu bir skeç içinde çalışmalıdır.Bir skeç, sanırım, sadece bir paketin yüklü sürümünü kullanır, geliştirme ortamınızda yüklü olabilir (özellikle, devtools::load_all() vinyet oluşturmak için kullanılan kodu değiştirmez, install() gerekir ilk).

Son olarak, data() kullanarak biraz eski moda. Hadley ve diğerleri tembel verileri kullanmanızı öneriyor, böylece veriler ad alanında otomatik olarak görünür. Aşağıdakileri DESCRIPTION’da deneyin.

LazyData: true 
LazyDataCompression: xz