2012-10-15 3 views
0

저는 기술이 뛰어난 직원이 아닌 제 회사의 R 패키지를 개발 중입니다.패키지 설치 중에 .First()에 줄을 추가하십시오.

사용자의 생활을 촉진하기 위해 관련 패키지를 업데이트하고로드하기 위해 시작할 때 출처를 찾을 수있는 전역 위치에 스크립트 집합이 있어야한다고 생각합니다.

제 아이디어는 각 particalar 패키지가 설치되어있는 경우에만 소스 코드를 가져 오는 각 사용자 정의 패키지에 대한 스크립트를 작성하는 것입니다. 이 사용자는 패키지 A를 설치 한 후 그 다른 패키지를 설치할 때 나는 좁은 방() 함수를 수정해야 작동하려면 :

.First() <- function(){ 
    source('script_to_package_A') 
} 

패키지 B는 다음 설치되어있는 경우 :

.First() <- function(){ 
    source('script_to_package_A') 
    source('script_to_package_B') 
} 

따라서 .First()가 이미 정의되어 있고 그 줄이 이미 없거나 .Rprofile이 없으면 .Rprofile 파일 안에 줄을 추가하는 데 관심이 있습니다.

이것을 달성하는 가장 좋은 방법은 무엇입니까?

기원 토마스

편집 : 그냥 명확하게 - 내가 무엇을 찾고 있어요 것은 시작시 호출되는 좁은 방() 함수를 수정하는 안전한 방법입니다. 즉, 사용자가 이미 .First() 함수를 정의한 경우 이전 .First()를 바꾸는 대신 추가가 추가됩니다. 특정 패키지가 설치 될 때이 추가 기능이 우선적으로 수행되지만 필요하지는 않습니다. 나는 .First() 함수에 무엇을 추가 할 것인지에 대한 확신이 있기 때문에 문제가되지 않습니다.

+0

시작시 'update.packages (ask = F)'함수를 실행하지 않고 모든 패키지를 자동으로 업데이트하므로 (패키지 별 확인없이) 왜 자동으로 업데이트할까요? – Maiasaura

+1

또한 R 패키지를 작성하는 전체 요점을 놓치고 있습니다. 왜 그 기능이 패키지에 존재할 때 패키지에서 스크립트를 가져 오는가? 'First()'안에'source'보다는 오히려 그 패키지에있는 관련 함수를 호출하면됩니다. – Maiasaura

+0

그 이유는 각 설치시 시작하는 동안 일어나는 일을 바꿀 수있는 가능성을 가지기를 원합니다. 따라서 제 의지로 바꿀 수있는 스크립트를 소싱하는 것이 좋은 생각 일 것입니다. – ThomasP85

답변

0

내가 원하는 것을 얻는 가장 쉬운 방법은 모든 컴퓨터에 단일 패키지를 설치하는 것입니다. 모든 컴퓨터에서 .First 기능을 변경할 수 있으면 패키지를 설치할 수 있습니다.

귀하의 .First 기능은 다음과 같습니다

.First() <- function(){ 
    library(mypkg) 
    run_mypkg_fun() 
    ##Could also check for package updates 
    ##update.packages("mypkg"...) 
} 

run_mypkg_fun 포함하여 당신이 원하는 모든 검사, 할 수있는 기능 : 설치 무슨 조건으로 다른 기능을 실행

  • 설치 패키지
  • 합니다.
+0

패키지를 인스톨하기 위해서는 R을 재시작해야하기 때문에'.First' 안에 install.packages를 설치하고 싶다면'.First'을 실행하여 다음 패키지를 설치할 것입니다. – GSee

+0

@GSee -'install .packages' 호출을'if (interactive()) {...}'로하면 괜찮을 것입니다. 명시 적으로'utils :: install.packages()'를 사용하고 repo를 지정해야한다고 생각합니다. – Dason

+0

대화 형 세션을 시작할 때 OP가 패키지를 설치하지 않으려면 @Dason, 예. – GSee