programing

네임 스페이스 종속성이 필요하지 않습니다.

goodcopy 2021. 1. 15. 19:18
반응형

네임 스페이스 종속성이 필요하지 않습니다.


CRAN에 대한 매뉴얼을 읽고 R 패키지를 빌드하려고합니다. 가져 오기를 사용하여 네임 스페이스에 함수를로드하는 것이 설명 파일에서 사용하는 것이 가장 좋은 방법이라는 것을 알 수있었습니다. 설명 파일에 추가 한 후 네임 스페이스 파일에도 추가했습니다. 필요한 함수와 함께 importFrom을 네임 스페이스 파일에 추가했습니다.

이제 패키지에서 R CMD 검사를 실행하면 다음과 같은 오류가 발생합니다.

네임 스페이스 종속성이 필요하지 않음 : 'ggplot2'

추가 정보 : 설명 파일의 Depends에 패키지를 추가해도로드되지 않습니다.

이걸 도와주세요.

아래에서 내 설명 파일을 찾으십시오.

Package: bigpackage
Type: Package
Title: Some title
Version: 1.0
Date: 2012-10-25
Author: Mayank Bansal
Maintainer: somename
Imports : R(>= 2.15.1), SweaveListingUtils( >=0.5.5),xtable(>=1.7-0),
        brew(>=1.0-6), knitr(>=0.8), RHive(>= 0.0-6), ggplot2(>=0.9.2)
        , brew, knitr
SystemRequirements : LaTeX(texi2dvi) must be present in the system to
        create PDF reports
Description: Some Description
License: file LICENSE
LazyLoad: yes
ByteCompile: true
OS_type : unix

import또는 importFromNAMESPACE 파일 을 사용하는 경우 DESCRIPTION 파일의 Imports 섹션에 해당 패키지에 대한 항목이 있어야합니다 (Deplies를 사용해야하는 이유가없는 경우 패키지에 Depends에 항목이 있어야 함). 수입품 아님)

다음은 Writing R Extensions 의 관련 섹션입니다.

'가져 오기'필드에는 네임 스페이스를 가져 왔지만 (NAMESPACE 파일에 지정된대로) 첨부 할 필요가없는 패키지가 나열됩니다. '::'및 ':::'연산자가 액세스하는 네임 스페이스는 여기에 나열되거나 '제안'또는 '향상'(아래 참조)에 나열되어야합니다. 이상적으로이 필드에는 사용되는 모든 표준 패키지가 포함되며 S4 사용 패키지를 포함하는 것이 중요합니다 (클래스 정의가 변경 될 수 있고 DESCRIPTION 파일이 이러한 상황이 발생했을 때 다시 설치할 패키지를 결정하는 데 사용되기 때문). 'Depends'필드에 선언 된 패키지는 'Imports'필드에도 없어야합니다.


단일 기능으로 패키지를 만들었습니다 f. 나는 importFrom당신이 당신 의 것과 같은 줄로 NAMESPACE 파일을 만들었습니다 .

NAMESPACE 파일

export("f")
importFrom("ggplot2","ggplot","geom_histogram")

이 시점에서 R CMD check예상대로 실행 하면 오류가 발생합니다.

네임 스페이스 종속성이 필요하지 않음 : 'ggplot2'

하지만 Imports: ggplot2DESCRIPTION 파일을 다음과 같이 추가 하면 R CMD check문제없이 통과 됩니다.

DESCRIPTION 파일

Package: anRpackage
Type: Package
Title: What the package does (short line)
Version: 1.0
Date: 2012-11-07
Author: Me
Maintainer: Who to complain to <yourfault@somewhere.net>
Description: More about what it does (maybe more than one line)
License: GPL
Imports: ggplot2

이 문제가 발생할 수있는 간단한 이유는 @import모든 함수에서 선언 할 때 실수로 쉼표를 사용한 경우 입니다.

예 :

#'
#' @import rvest, dplyr, stringr, jsonlite
#'
#' @export
#'

이것으로 바뀔 것이다

#'
#' @import rvest dplyr stringr jsonlite
#'
#' @export
#'

패키지 DESCRIPTION 파일 에서 쉼표로 구분되어 있기 때문에 이것은 일반적인 오류 입니다.

참조 URL : https://stackoverflow.com/questions/13085481/namespace-dependencies-not-required

반응형