2013-04-10 5 views
36

짧은 버전 : statsNormal의 설명서를 roxygen을 사용하여 에뮬레이션 할 수 있습니까?하나의 .Rd 파일에 여러 함수가 있습니다.

긴 버전 : 나는 패키지에 일하고 있어요 및 그룹에 대한 일반적인 참조가 될 것입니다 하나 개의 제목 아래에 수집 된 일반적인 입력/매개 변수와 함수를 가짐으로써 문서를 읽기 쉽게 만들려고했다. 각 기능은 여전히 ​​최종 사용자가 독립적으로 사용할 수 있어야합니다.

나는 정상적인 배포와 관련된 여러 가지 방법을 제공하는 Normal에 대한 설명서를 영감으로 받아 들였습니다. stats::dnorm(). 내가 ?dnorm를 검색 할 때

나는 도움말 섹션의 이름 NormalNormal 불구하고 내 보낸 함수 또는 객체로 표시되지 않습니다 찾을. funs.R에 다음 퍼팅 내가 해봤

:

##' @rdname funs 
##' @name funs 
##' @aliases sum1 
##' @aliases prod1 
##' @title Two functions 
##' @param x X 
##' @param y Y 
##' @return sum1 returns x+y 
##' \cr 
##' prod1 returns x*y 
##' @examples 
##' sum1(3,4) 
##' prod1(3,4) 
##' @export 
sum1 <- function(x,y) x+y 
##' @export 
##' @rdname funs 
prod1 <- function(x,y) x*y 

나는 그 위에 roxygen2를 실행합니다. 이 최소 패키지에서 R CMD check을 실행하면 패키지를 undefined exports: funs으로로드 할 수 없음을 알게됩니다. ##' @name funs 줄을 지우면 패키지에 R CMD check이 전달되지만 funs 대신 도움말 섹션 이름이 sum1입니다. 내가 추가하면 예제 섹션 아래에 다음과 같은 : 그것은 통과하고 내가 원하는만큼 도움 포맷,하지만 난 제대로 표시 할 이름을 취득하기 위해 의미없는 기능을 수출하고 있습니다 볼 수 있습니다

##' @export 
funs <- function(x) x 

.

stats에 대한 소스 도움말 파일을 살펴 보았지만 달성 방법을 알기는했지만 .Rdx 형식으로 표시하는 방법이 확실하지 않습니다.

또한 관련된 메모에서 Normal입니다.

require(stats) 
getAnywhere("Normal") 
> no object named 'Normal' was found 

업데이트 :

@TylerRinker -이 내가 시도했던 최초의 일이었다 두려워. 이것은 하나 개의 .Rd 파일로 기능을 결합하지만 관련된 도움의 이름이 첫 번째 함수의 이름과 동일 내가 무엇을 피하기 위해 노력했다 :

##' sum 
##' gives the sum 
##' @param x X 
##' @param y Y 
##' @return sum1 returns x+y 
##' @examples 
##' sum1(3,4) 
##' @rdname funs 
##' @export 
sum1 <- function(x,y) x+y 
##' product 
##' gives the product 
##' @return prod1 returns x*y 
##' @examples 
##' prod1(3,4) 
##' @rdname funs 
##' @export 
prod1 <- function(x,y) x*y 

@Andrie을 -이 솔루션은 정확히 원인 같은 어려움이 있다면, 도움의 이름은 첫 번째 기능과 동일합니다.

아마도 이것은 단지 이것은 내가 발견 한 가장 좋은 해결 방법이지만, 더 나은 무언가가 따라 오는 경우 허용 대답을 변경 기쁠 것

+1

내가 틀릴 수도 있지만 이것은 어떻게 처리하나요 : https://github.com/trinker/reports/blob/master/R/GQ.R –

+1

'## '@name funs'를 제거하면 효과가 있습니다. (나는 생각한다). – Andrie

+5

[Hadley] (http://r-pkgs.had.co.nz/man.html#dry2) 관련 게시물,'@desIn' 옵션 사용. – zx8754

답변

18

... 수 없습니다 ...

##' @name funs 
##' @aliases sum1 
##' @aliases prod1 
##' 
##' @title Two functions of x and y 
##' 
##' @param x =X 
##' @param y =Y 
##' 
##' @note \code{funs} is a generic name for the functions documented. 
##' \cr 
##' If called, \code{funs} returns its own arguments. 
##' 
##' @rdname funs 
##' @export 
funs <- function(x,y) {identity(c(x,y))} 
##' 
##' @rdname funs 
##' @return \code{sum1(x,y)} returns x+y 
##' @examples 
##' sum1(3,4) 
##' @export 
sum1 <- function(x,y) x+y 
##' 
##' @rdname funs 
##' @return \code{prod1(x,y)} returns x*y 
##' @examples 
##' prod1(3,4) 
##' @export 
prod1 <- function(x,y) x*y 

참고 포맷하면이 a reportable bug을 방지하기 위해 @usage의 사용을 방지 할 수 있습니다.

github에서 이것이 어떻게 더 잘 해결되었는지 알 수 있습니다.

@usage는 다음 줄을 추가하는 것입니다 사용 않는 더 나은 솔루션 : 나는 어떤 최소화하기 위해 노력하고있어하지만

##' @rdname funs 
##' @export 

의 첫 번째 사용 후

##' @usage funs(x,y) A nominal function of x and y 

합니다. 특히 folloiwng에, 할 힘을 달래기 위해 R CMD check에 의해 throw 경고 :

Functions with \usage entries need to have the appropriate \alias 
    entries, and all their arguments documented. 
    The \usage entries must correspond to syntactically valid R code. 

이 마지막 @usage에 대한 문서의 내 독서의 오차가있을 수 있습니다.

감사합니다.

+2

@aliases가 필요하다고 생각하지 않습니다. @aliame 재미와 함께 자동으로 추가됩니다. 둘째, @usage는 R 코드 만 포함해야하므로 주석을 추가하려면'## '@usage funs (x, y) # x 및 y의 공칭 함수'' – Calimo

+0

함수에서 작동합니다. 데이터 세트를 위해 어떻게 수정합니까? – jebyrnes

15

내가 아는 한, .Rd 파일에 3 개의 이름이 기재되어있는 유일한 방법은 실제 개체 3 개를 문서화하는 것입니다. 그러나 속임수는 : 그들 중 하나는 NULL 일 수 있고 내보낼 수 없습니다!

##' @name funs 
##' @rdname funs 
##' 
##' @title Two functions of sum1 and prod1 
##' 
##' @param x =X 
##' @param y =Y 
##' 
##' @return x*y (prod1) or x+y (sum1). 
NULL 

##' @rdname funs 
##' @examples 
##' sum1(3,4) 
##' @export 
sum1 <- function(x,y) x+y 

##' @rdname funs 
##' @examples 
##' prod1(3,4) 
##' @export 
prod1 <- function(x,y) x*y 

꽤 해킹 된 것처럼 보이지만 작동합니다.