2011-12-29 4 views
2

소규모 그룹의 기술자가 아닌 사용자로 일하고 있으며 그룹 내에 R 스크립트를 배포하려고합니다. 이 명령은 Shebang 행에서 'RScript'를 사용하고 명령 행 인수를 사용하여 그래픽 파일과 일부 텍스트를 출력으로 생성합니다.외부 패키지를 사용하는 R 스크립트 배포

스크립트가 사용하는 외부 패키지 (인수를 구문 분석하기위한 optparse와 같은 것조차도)를 사용자가 사용할 수 있는지 확인하는 방법이 있는지 궁금합니다. 그룹의 모든 사람들이 지침을 따라 명령 줄에서 프로그램을 호출 할 수 있지만 사람들에게 R을 시작하고 종속성을 다운로드하고 설치하도록 요청할 수있을 것으로 기대합니다. 필자는 py2exe 나 py2app를 Python의 비슷한 상황에서 사용했지만, R 스크립트를 배포하는 것과 동일한 방법이나 모범 사례가 있는지 궁금합니다.

+3

'라이브러리'라고 말하면 '패키지'를 의미합니까? – Spacedman

+0

예. 애매한 용어로 유감스럽게 생각합니다. – primelens

+0

나는 용어를 고쳤다 ... – Iterator

답변

9

패키지를 작성하고 종속성을 설명 : 종속으로 선언하십시오. 그것은 작동하며, OS 전반에서 광범위하게 테스트됩니다.

또한 로컬 저장소에 패키지를 배치하여 업데이트를 더욱 쉽고 자동으로 수행 할 수 있습니다. 한때 회사 내부 패키지를 작성하여 자체 시작 코드에서 로컬 저장소에서 최신 버전을 사용할 수 있는지 확인했습니다.

7

Dirk는 당신에게 베스트 프랙티스 솔루션 (의존성이있는 패키지)을 주었지만 다음 베스트 프랙티스 솔루션은 아마도 require (foo)를 사용하고 패키지가 있으면 테스트 한 다음 그렇지 않은 경우 얻는 것입니다. 당신은 사용자가 심문되지 않도록 install.packages에 크랑의 REPO를 지정할 수 있습니다, 또한 경고를 중지하는 데 필요한 일부 옵션을 사용

if(require(foo)){ 
# foo loaded okay 
cat("we got foo\n") 
}else{ 
cat("uh oh, no foo. let's get it\n") 
install.packages("foo") 
} 

:처럼 뭔가.

+0

좋은 대답. 또한 Dirk의 제안과 함께 로컬 저장소/서버를 지정할 수 있으므로 CRAN에 액세스 할 필요가 없습니다. 로컬 서버를 사용하는 경우 관리자는 내부에서 파생 된 패키지 또는 패키지 모음에 대한 자동 업데이트를 지정하여 설치간에 일관성을 유지할 수 있습니다. 패키지 버전이 다른 사용자가 있으면 충돌이 발생하거나 모든 것이 어떻게 작동해야하는지 잘 테스트하지 않으면 약간의 악몽이 될 수 있습니다. – Iterator

관련 문제