2014-09-29 3 views
16

RStudio에서 작성한 R 패키지가 있는데 이것을 my_pkg이라고합시다. 패키지 잘 작동의 기능RStudio에서 devtools :: load_all (".")을 실행할 때의 문자 (0) 경고

Loading my_pkg 
Warning messages: 
1: character(0) 
2: character(0) 
3: character(0) 
4: character(0) 
5: character(0) 

모든 : 나는 (특히 Ctrl + Shift + L 바로 가기를 사용) RStudio 내 devtools::load_all(".")를 실행하면, 다음과 같은 메시지가 뜹니다. 내 NAMESPACEDESCRIPTION 파일은 구문 오류없이 완료됩니다. 그러나 ?my_pkg을 실행하면 도움말 파일이 DESCRIPTION 파일에 제공된 사양과 일치하지 않습니다. ImportsDESCRIPTION에서 제거하면 더 이상 character(0) 경고 메시지가 표시되지 않습니다. 물론 수입이 필요합니다. ImportsSuggests으로 변경하면 character(0) 경고 메시지가 나타납니다.

여기에는 설명 파일 콘텐츠가 있으며 IP 보호를 위해 일부 내용이 변경되었습니다.

Package: scoutdroid 
Title: This is where the title is. 
Version: 0.1 
[email protected]: "Ben Hanowell <[email protected]> [aut, cre]" 
Description: This is where the description is. 
Depends: 
    R (>= 3.1.0) 
Imports: 
    dplyr, 
    lubridate, 
    mboost, 
    randomForestSRC, 
    RODBC, 
    stringr 
License: file LICENSE 
LazyData: true 

여기는 NAMESPACE입니다.

# Generated by roxygen2 (4.0.1): do not edit by hand 

import(RODBC) 
import(dplyr) 
import(lubridate) 
import(mboost) 
import(parallel) 
import(randomForestSRC) 
import(stringr) 

나는 RStudio이 빌드 탭에서 & 새로 고침 버튼을 구축 사용할 때, 나는 다음과 같은 경고를 얻을 :

** 준비 패키지 게으른 로딩

Warning: replacing previous import by 'lubridate::intersect' when loading 'scoutdroid' 
Warning: replacing previous import by 'lubridate::setdiff' when loading 'scoutdroid' 
Warning: replacing previous import by 'lubridate::union' when loading 'scoutdroid' 

편집 추가 된 일부 사람들이 무슨 일이 벌어 질지 이해할 수 있도록 자세한 정보가 필요합니다.

편집 2 독점적 인 전체 패키지를 제공하지는 않지만 DESCRIPTION 파일도 추가했습니다.

편집 3NAMESPACE이 추가되었습니다.

편집 4 빌드 탭에서 RStudio 빌드 & 다시로드 버튼을 사용할 때 발생하는 경고가 추가되었습니다.

+0

패키지가 github에 있습니까 – Dason

+0

아니요. 독점권을 가지고 있습니다. * 편집 * Bitbucket에 있지만 액세스는 비공개입니다. –

+1

그럼 행운을 빈다. 어쩌면 최소한의 재현 가능한 예제를 만들 수 있습니다. – Dason

답변

16

주석에서 약간의 대화 후, 우리는 load_all이주는 빈 경고가 기능 이름 충돌로 인해 패키지를로드 할 때 실제로 시작된다는 것을 알아 냈습니다.

문제는 패키지에서 함수를 가져온 다음 해당 함수를 덮어 쓰는 것입니다.

Warning: replacing previous import by 'lubridate::intersect' when loading 'scoutdroid' 
Warning: replacing previous import by 'lubridate::setdiff' when loading 'scoutdroid' 
Warning: replacing previous import by 'lubridate::union' when loading 'scoutdroid' 

그것은 load_all 그 경고 대신 character(0)를 볼 이유 (그냥 추측) 머플을 시도 할 수있다 같습니다 : 그건 당신이 RStudio에서 "& 새로 고침을 구축"클릭하면 당신이 본대로 R이 경고를 던졌습니다 발생하면 실제 경고의 이 특별한 경고는 침묵하기가 어렵습니다.

일반적으로 전체 패키지의 네임 스페이스를 가져 오는 것은 좋지 않습니다. 대신 필요한 기호 만 가져와야합니다. 더 많은 정보는 내 this post을 참조하십시오.

해결책은 NAMESPACE 파일에 import 대신 importFrom을 사용하는 것입니다.

+1

다른 사람들이 들어 와서 해결책을 찾고 있습니다. 'devtools :: check'을 실행하면 위의 경고가 나타납니다. – adibender