패키지를 작성하는 방법을 알아 내려고했지만 시간을 투자하지 않았습니다. 각각의 미니 프로젝트에 대해 모든 하위 수준 기능을 'functions /'라는 폴더에 보관하고 명시 적으로 만든 별도의 네임 스페이스로 소싱합니다.
다음 코드 줄은 검색 경로에 "myfuncs"라는 환경이 아직없는 경우 (연결을 사용하여) 환경을 만들고 내 'functions /'디렉토리의 .r 파일에 포함 된 함수로 채 웁니다 ( sys.source). 나는 보통이 줄들을 메인 스크립트의 맨 위에 놓는다. "사용자 인터페이스"는 높은 수준의 함수 (낮은 수준의 함수 호출)가 호출되는 "사용자 인터페이스"를 의미한다.
if( length(grep("^myfuncs$",search()))==0 )
attach("myfuncs",pos=2)
for( f in list.files("functions","\\.r$",full=TRUE) )
sys.source(f,pos.to.env(grep("^myfuncs$",search())))
변경할 때 항상 같은 줄을 사용하여 소스를 변경하거나 다음과 같은 것을 사용할 수 있습니다
evalq(f <- function(x) x * 2, pos.to.env(grep("^myfuncs$",search())))
생성 한 환경에서 추가 / 수정을 평가합니다.
내가 아는 것은 끔찍한 일이지만 그것에 대해 너무 공식적이 될 필요는 없습니다 (그러나 패키지 시스템을 장려 할 수 있다면 장래에 그 방식으로 마이그레이션 할 것입니다).
코딩 규칙에 관해서는 이것이 미학에 관해 내가 본 유일한 것입니다 (나는 그것들을 좋아하고 느슨하게 따르지만 R에서 너무 많은 중괄호를 사용하지는 않습니다) :
http://www1.maths.lth.se/help/R/RCC/
[, drop = FALSE]와 <-의 사용에 관한 다른 "수집"이 useR에서 다양한 프레젠테이션 (보통 기조 연설)에서 제안한 것처럼! 컨퍼런스이지만,이 중 어느 것도 엄격하다고 생각하지 않습니다 ([, drop = FALSE]는 예상 한 입력을 확신하지 못하는 프로그램에 유용합니다).