2010-12-06 16 views
54

İnsanlar bir R paketini ad alanı hakkında öğrenmeyi nasıl öğreniyor? Belgeyi "R Uzantıları" nda buluyorum, ancak bir değişken ithal edildiğinde ya da ihraç edildiğinde gerçekte ne olup bittiğini anlamıyorum - Bu direktiflere bir kukla kılavuzuna ihtiyacım var.R paketlerindeki ad alanları

Dışa aktarılan içeriğe nasıl karar verirsiniz? Pkg ::: var sözdizimini gerçekten gerektirmemesi gereken her şey mi? İthalattan ne haber?

İçe aktarma işlevi, işlev adları çakıştığında diğer paket işlevlerinin kullanımının karışmamasını kolaylaştırır mı?

S4 sınıfları için özel hususlar var mı?

Sp ve rgdal gibi ad alanlarına aşina olduğum paketler oldukça karmaşıktır - işleri daha net hale getirebilecek basit örnekler var mı?

cevap

34

Ben devtools wiki üzerinde bir yanıt bir başlangıç ​​var Bu, bu yapıların amacı hakkında NAMESPACE/IMPORTS/DEPENDS ve bunların uygulanması hakkında daha azdır. Bazı sorularınızı cevaplandırır.

+0

Bu vikiyi sevdiğim gibi seviyorum. Büyük kaynak! – Shane

+0

@hadley Oluşturduğum paketler için şimdi 2.14 için bir isim alanı eklemeliyim. Bu iş parçacığı şu an anlayışımın biraz üzerindedir. Örneğin, plyr klasörünü açtığımda NAMSPACE adlı bir belgeyi görüyorum. Bu belgeyi işlevlerim için sahip olduğunuz paketle aynı biçime koyacak olsaydım, bu benim yapmam gereken tek şey olurdu. –

+1

@TylerRinker Evet, bunun özü bu. Dışa aktarmak istediğiniz her işlev için bir ihracat (...) ifadesi oluşturun. Paketleri içe aktarırsanız, her paket için bir "import (...)" ifadesi eklemeniz gerekir. Ayrıca bu sayfada @DirkEddelbuettel'in cevabına bakınız. – Andrie

14

Okuduğum en açık açıklama John Chambers'ın Software for Data Analysis: Programming with R, sayfa 103'tür. R Uzantıları el kitabında bulduğunuzdan daha iyi olan ücretsiz çevrimiçi açıklamalardan hiçbirini bilmiyorum.

+0

bunun için teşekkürler, henüz okumadım hatırlatır - yayınlanmış olduğunu görmek için heyecan duymuştum – mdsumner

+0

Bu kitaptaki açıklama gerçekten tam olarak – mdsumner

11

Ayrıca kolay, küçük bir paket seçip de takip edebilirsiniz.

Küçük paketlerimden biri olan digest ürününe rastgele rastgele baktım. Bir (küçük) dinamik kitaplık yüklerim ve bir sembolü, digest() işlevini verir. İşte NAMESPACE dosyasının içeriği:

## package has dynamic library 
useDynLib(digest) 

## and one and only one core function 
export(digest) 

kaynak dosyalarının geri kalanı göz at ve belki bazı deneyler örneğe bakarak yanında Yazma R Extensions okumak ve yapmaya çalışacağım.

Ben Chambers bulgularını, diğer StackOverflow mesajları ve çok konsolide .... sonra burada http://adv-r.had.co.nz/Namespaces.html

+2

Nice, artı checksum algoritmaları - ndan sonra neydi? Rc olup olmadığını merak ediyordum. . . Bunun için bir R paketi;) – mdsumner

+1

Aye. Varolan paketlerin NAMESPACE dosyalarına bakmak kesinlikle nasıl yapılacağını öğrendim. – Sharpie

23

Birkaç yıl:

+0

Mükemmel yazma. –

+0

Harika açık ("Yazma R Uzantıları" belgesinin aksine ...) –

İlgili konular