2014-10-24 3 views
1

사용자 정의 함수가 포함 된 패키지를 RStudio에 생성했습니다.R, 패키지의 함수를 수정 한 후 수정 사항이 무시됩니다.

이 패키지에 포함 된 기능에서 뭔가를 변경하면이 작업이 "업데이트"되기를 기대하면서 패키지를 다시 빌드하려면 Build (빌드) 탭에서 "Build & Reload"를 사용하고 있습니다.

일반적으로 완벽하게 작동합니다. 그러나 그것이 일어나지 않는 한 가지 기능이 있습니다. function.R 파일을 열면 바로 수정됩니다. 그러나 콘솔이나 스크립트에서 호출하면 이전 버전이로드됩니다. 재시동, "정리 및 재구성"과 같은 간단한 작업을 시도했습니다. 다시 제거하고 다시 작성하고 다시 추가하려고했지만이 경우에도 놀랍게도 이전 버전이로드되었습니다. screenshot 나는이에보고했지만, 난 여전히 필요한 일반적인 이해가 부족하고 나는이 차이가있는 경우도 확실하지 않다 :

이 기능이 패키지에 다른 사람과 다르게 표시하는 눈치있는 유일한 방법입니다 문제와 관련이 있습니다.

설명 1 : 글로벌 환경이 비어있어 함수를 마스킹하지 않습니다. 비고 2 : 검색() 경로 (패키지의 이름 SDA이며, 제 2 위치에)입니다 :

> search() 
[1] ".GlobalEnv"  "package:SDA"  "package:splines" "tools:rstudio"  "package:stats"  "package:graphics" "package:grDevices" "package:utils"  
[9] "package:datasets" "package:methods" "Autoloads"   "package:base" 

NB : 나는 개발을위한 패키지 "DevTools로"를 사용하고 있습니다.

+1

다시 빌드 한 후에는'library'를 호출 할 때 사용할 새 기능의 원래 패키지를 다시 설치하거나 업데이트해야합니다. 다시 설치 했습니까? R은 업데이트 될 때까지 이전 패키지를 계속 사용합니다. –

+0

> install.packages ("SDA") install.packages의 오류 :로드 된 패키지 업데이트 ----- 또한이 작업은 재구성이 다른 기능들과 관련이 있습니다. – Giuseppe

+1

당신의 기능이 다른 환경에서 보이는 이유는 그것이 호출되었을 가능성이 높습니다. 패키지에서 다른 함수를 호출하면 에서 해당 정의가 창에 표시됩니다. R은 호출 될 때까지 실제로 패키지에서 함수 오브젝트를 인스턴스화하지 않습니다. – Jonathan

답변

1

나는 단지 같은 문제를 해결하기 위해 왔습니다. R 세션을 다시 시작하기 만하면됩니다. R이 함수를 캐싱하는 것 같고 detach 패키지를 제거한 다음 (remove.packages) 패키지를 제거한 다음 (install.packages)을로드하고 (require)로드하십시오. 세션을 닫은 다음 패키지를 빌드해야합니다. 변경 :

install.packages("path_to_package.tar.gz",repos=NULL,type="source") 
require("package") 

이것은 나를 위해 일했습니다. 희망이 도움이됩니다.

관련 문제