2012-12-22 4 views
6

rmongodb 패키지를 래핑하는 R 패키지를 개발 중이며 MongoDB 작업을위한 개발자 친화적 인 인터페이스를 만듭니다. 패키지는 내부적으로 proto을 사용합니다.R 패키지에서 환경 내보내기

내가 누구의 정의 MongoDB라는 프로토 개체 (환경)을 통해 하나의 팩토리 메소드를 내보낼 것입니다

이 RStudio & devtools와 지역 테스트 기간 동안 개발하는 동안
MongoDB <- proto(
    new = function(., ...) { 
    # Good stuff in here... 
    } 
) 

이 보이지 않는다 문제가 될 수 있습니다. 그러나, 나는 몇 가지 문제가 발생하고있다 : " 'MongoDB를'필요하지 않음 네임 스페이스 종속성"

  • devtools::check()R CMD check이 실패하게 내 네임 스페이스 파일에 import(MongoDB) 퍼팅 주장. 나는이 import 지시문을 제거하면

  • R CMD check는 "개체 'MongoDB의이'을 (를) 찾을 수 없습니다"실패 내가 수동으로 export(MongoDB)를 추가 할 경우에도, 내 testthat 테스트를 실행하는 동안. 그러나 devtools::test()은 RStudio에서 잘 작동합니다.

R 패키지의 환경 인 proto 개체를 내보내는 권장 방법은 무엇입니까?

업데이트 : 아래 가보의 제안 당

, 내가 MongoDB.Rd 데이터로 MongoDB를 (링크 소스를 가지고) 선언 있는지 확인했습니다. 나는 여전히 MongoDB이 (testthat을 사용하는) 테스트에서 보이지 않는 데 실패합니다. 내 DESCRIPTION 파일은 here이고 NAMESPACEhere입니다.

+0

[RMONGo] (http : // cran.r-project.org/web/packages/RMongo/index.html) 패키지뿐만 아니라 자바 드라이버를 사용하며'rmongodb' 패키지보다 높은 수준의 인터페이스를 가지고 있습니다. – Stennie

답변

3

이 시도 :

  1. MongoDB 프로토 객체가 공개적으로 사용할 수 있도록 사용자의 NAMESPACE 파일에 export("MongoDB")을 지정합니다.
  2. DESCRIPTION 파일에 LazyData: yes을 지정하면 액세스 할 때 자동으로로드됩니다.
  3. .Rd 파일을 데이터 집합으로 문서화하여 추가하십시오.

그러면 R CMD check을 전달해야합니다.

+0

Gabor에게 제안 해 주셔서 감사합니다. 나는 같은 이유로'check '에 실패한다 : 테스트를로드 할 때'MongoDB'를 찾을 수 없다. 나는'Rd' 파일, DESCRIPTION 및 NAMESPACE에 대한 링크로 질문을 갱신했습니다. – Sim

+0

@Sim, 내가 언급 한 3 가지 포인트를 사용하여 패키지를 만들었으므로 사용하고있는 R이 아닌 개발 환경의 문제 일 가능성이 높습니다. 이러한 툴의 유지 보수 담당자에게 맡겨야 할 수도 있습니다 . –

+0

제가 이해하고 있는지 확인하십시오 : 문제가 테스트와 함께 나타나기 때문에, @hadley로 문제를 제기하고 그것이'testthat' (테스트가있는 곳)인지 아니면'devtools' (방출되는지 'NAMESPACE'에서 잠재적으로 잘못된 지시 사항)? – Sim

1

이 지시문 :

import(MongoDB) 

는 패키지에 MongoDB 네임 스페이스를 가져올 수 있다는 것을 의미한다. 아마도 내가 제대로 이해한다면 당신이 원하는 것이 아닐 것입니다.

나는

export(MongoDB) 

잘 작동합니다 다음, 당신은 MongoDB 개체를 내보낼 생각합니다.

+0

. 'import' 문은'devtools'에 의해 삽입됩니다. 이것은 멋지지 않습니다. 아아,'export (MongoDB)'는 작동하지 않습니다. – Sim