dev30ools :: document()를 사용하여 R
패키지를 개발하여 NAMESPACE 파일을 만듭니다. 기능 중 몇 가지는 요약, 예측, 플롯, 인쇄용 S3 메소드이며, 일반은 base
또는 stats
입니다. 해들리가 권장하는대로 @export를 사용 중이며 NAMESPACE의 올바른 S3method 항목으로 연결되며 패키지는 모든 검사에 -as-cran를 전달합니다. 그러나 함수는 NAMESPACE에 내 보내지 않으므로 print.myclass를 호출 할 수 없습니다 (NAMESPACE를 어지럽히는 것을 피하기 위해 원하는 동작임을 이해합니다). 그러나 Mypackage :: print.myclass 함수를 호출하면 함수가 Mypackage
에서 내 보낸 개체가 아니라는 오류가 발생합니다.NAMESPACE의 S3 메서드가 내보내기되지 않았습니다.
질문 : 올바른 동작입니까? 아니면 함수를 내보내는 데 필요한 다른 단계가 있습니까? @method print Myclass와 @export를 추가하려고 시도했지만 행운은 없습니다. 사용하는 R 3.4.2 with devtools
MAC OS X 10.12.6 이하 1.13.3
고마워! Merlise
편집 됨 : 추가하는 코드/내보내기 방법 및 내보내기 기능이 업데이트
간단한 예 - 기능 RStudio의 골격 패키지를 빌드 : 네임 스페이스가 지금 가지고
#' test for export of S3 methods
#'
#' @title "print hello world for any object"
#' @param x object
#' @param digits optional number specifying the number of digits to display
#' @param ... other parameters to be passed to \code{print.default}
#' @export print.hello
#' @export
print.hello = function (x, digits = max(3, getOption("digits") - 3), ...)
{
cat("\n Hello World \n")
invisible()
}
# Generated by roxygen2: do not edit by hand
S3method(print,hello)
export(print.hello)
@export를 인수없이 사용하면 @export print.hello exports 이 함수는 NAMESPACE에 메소드를 추가하지는 않지만 (이는 패키지 검사에 오류가 발생할 수 있습니다). 둘 다 있으면 메소드와 함수를 내보낼 수 있습니다.
* 질문을로드하는 것,이 경우에서, : 그게 올바른 행동입니까? * 나는 그것이 올바른 행동이라고 생각합니다. – Suren