2011-10-13 23 views
6
ile setOldClass()

"Foo" adlı bir S3 sınıfı sağlayan bir paket geliştiriyorum. Aynı zamanda "başkasının" S4 sınıfı "Bar" olarak adlandırmak için bir "olarak" yöntemi sağlar. Benim kod şöyle görünür:Belge kümesiAs() ve Roface

#' ... 
#' @name as 
#' @export 
setAs("Foo", "SpatialPointsDataFrame", function(from) { 
    # do stuff and return a SpatialPointsDataFrame 
}) 

ama sonra R CMD CHECK'e gelen bu olsun:

#' ... 
setOldClass("Foo") 

#' ... 
setAs("Foo", "SpatialPointsDataFrame", function(from) { 
    # do stuff and return a SpatialPointsDataFrame 
}) 

düzenleme Bu denedim kontrol

adı alanı olup olmadığını Belirtilen bağımlılıklar ile yüklenebilir ... UYARI İsim alanında bir hata oluştuExport (ns, export): tanımsız dışa aktarma: olarak çağrılar: loadNamespace -> namespaceExport Yürütme durduruldu

Bir ad alanı yüklenen temel ad alanıyla yüklenebilmelidir: aksi takdirde ad alanı kaydedilmiş bir nesne tarafından yüklenirse, oturum başlatılamayacaktır.

Muhtemelen bazı ithalatların NAMESPACE dosyasında bildirilmesi gerekir. Ben Hadley'in devtools paketini kullanıyorum

#' @importClassesFrom sp SpatialPointsDataFrame 

, bu yüzden roxygen2 sanırım: Ayrı bir .R dosyasında

, var.

R> document("MyPackage") 
+0

hadley'in devtools paketi. en iyi denemeyi göstermek için düzenlenmiştir. – dholstius

+0

Güzel düzenleme. Yakında cevaplanamazsa şaşırırım. –

cevap

5

roxygen2 ayrıştırıcı setOldClass() ve setAs() ayrıştırmak etmedi: Bu benim işim. Uygun @name etiketlerini bulmamız gerekiyor.

#' "Foo" class 
#' 
#' @name Foo-class 
#' @aliases Foo 
#' @family Foo 
#' 
#' @exportClass Foo 
setOldClass("Foo") 

#' As("Foo", "SpatialPointsDataFrame") 
#' 
#' @name as 
#' @family Foo 
#' 
#' @importClassesFrom sp SpatialPointsDataFrame 
setAs("Foo", "SpatialPointsDataFrame", function(from) { 
    # do stuff and return a SpatialPointsDataFrame 
}) 

ben ayrıntılı olarak setAs() işlevi hakkında bilmiyorum, ama as() fonksiyon yöntemleri paketinden yüklenir. Yani, NAMESPACE'de export(as) girişine ihtiyacımız olmadığını düşünüyorum.

+0

Gerçekten bir roxygen pro değil, ve bu soru oldukça eski, ama ... 'setAs()' imzası 'coerce, Foo, SpatilPointsDataFrame' ile' coerce 'üzerinde bir yöntem yaratır, böylece @name coerce 've muhtemelen '@aliases coerce, Foo, SpatilPointsDataFrame-method'. Bunu herkese açık hale getirmek için @exportMethods coerce'ı kullanmak istersiniz. –