2010-12-09 13 views
16

Aşağıda, için bir doküman yazmak istediğim mini bir örnek yayınlanmıştır: “[“ S4 sınıfı için bir yöntem ”. Birisi jenerik "[" roxygen ve S4 kullanarak bir yöntemi doğru bir şekilde nasıl belgeleyeceğini biliyor mu? Yapıdan sonra paketi kontrol ederken bir uyarı alıyorum (aşağıya bakın). paket checkS4 "[" ve ​​"[<-“ yöntemleri doğru şekilde nasıl taranır?

#' An S4 class that stores a string. 
#' @slot a contains a string 
#' @export 
setClass("testClass", 
     representation(a="character")) 

#' extract method for testClass 
#' 
#' @docType methods 
#' @rdname extract-methods 
setMethod("[", signature(x = "testClass", i = "ANY", j="ANY"), 
     function (x, i, j, ..., drop){ 
      print("void function") 
     } 
) 

alıntı: jenerik '[' ve siglist 'TestClass' Tüm kullanıcı düzeyi nesnelerini:

  • ... Undocumented S4 yöntemleri UYARI dokümantasyon girişlerini eksik kontrol Bir pakette (S4 sınıfları ve yöntemleri dahil) dokümantasyon girişleri olmalıdır. 'Yazma R dökümantasyon dosyaları' bölümündeki 'Yazma R Uzatmalar' bölümüne bakın. peşin

sayesinde Mark

cevap

6

, Artık iş çevrelerine ihtiyaç duymazsınız ve sadece aşağıdakilere ihtiyaç duyarsınız:

#' Extract parts of testClass. 
#' 
setMethod("[", signature(x = "testClass", i = "ANY", j="ANY"), 
    function (x, i, j, ..., drop){ 
    print("void function") 
    } 
) 
+1

Bunu roxygen2 4.0.1 ile çalıştırdığımda R CMD'den aşağıdakileri alıyorum: 'UYARI Belge nesnesinde belgesiz argümanlar '[, testClass-method' 'j' '...' \ Kullanım girdileriyle işlevler uygun \ alias girişlerine ve tüm argümanlarına sahip olmanız gerekir. ' – azvoleff

+0

@azvoleff https://github.com/klutometis/roxygen/issues adresinden tekrarlanabilir örnek içeren bir hata raporu gönderiniz – hadley

+0

Bitti - https: // github.com/klutometis/roxygen/issues/272 – azvoleff

10

Sonunda az çok anladım. En azından şimdi çalışır: Bir yedek fonksiyonu durumunda, Ne değer için

#' An S4 class that stores a string. 
#' @slot a contains a string 
#' @export 
setClass("testClass", 
    representation(a="character")) 

#' extract parts of testClass 
#' 
#' @name [ 
#' @aliases [,testClass-method 
#' @docType methods 
#' @rdname extract-methods 
#' 
setMethod("[", signature(x = "testClass", i = "ANY", j="ANY"), 
    function (x, i, j, ..., drop){ 
     print("void function") 
    } 
) 
7

, aşağıdaki gibi bir şey istersiniz: roxygen2> 3.0.0 itibariyle

#' An S4 class that stores a list. 
#' @export 
    setClass("testClass", 
     representation(a="list")) 

#' extract parts of testClass 
#' 
#' @name [ 
#' @aliases [,testClass-method 
#' @docType methods 
#' @rdname extract-methods 
setMethod("[", signature(x = "testClass", i = "ANY", j="ANY"), 
    function (x, i, j, ..., drop) { 
    [email protected][i] 
    } 
) 

#' replace names of testClass 
#' 
#' @name [ 
#' @aliases [<-,testClass-method 
#' @docType methods 
#' @rdname extract-methods 
setReplaceMethod("names", signature(x = "testClass", value = "ANY"), definition = function (x, value) { 
    names([email protected]) <- value 
    x 
}) 
+2

Harika teşekkürler, @name burada anahtardır, aksi takdirde 'blokta' adı eksik olur. Bu problemi çözer. –

İlgili konular