2017-10-27 1 views
0

RStudio v. 1.0.1.153에서 "R 패키지"로 새 프로젝트를 만들었습니다. 기본적으로 이러한 새로운 R 패키지 프로젝트 파일 hello.R 단순히로드 다른 R 세션에서 다음 패키지를 구축하고 다시로드에 의해 간단하게 액세스 할 수 있습니다 새 R 패키지에 패키지 파일 추가 및 액세스

hello <- function() { 
    print("Hello, world!") 
} 

가 (Ctrl 키 + B 시프트 +)

템플릿 기능을 포함하고, 함께 제공 빌드 된 패키지 및 함수 실행 :

> library(mylibrary) 
> hello() 
[1] "Hello, world!" 

이제 패키지의 여러 파일에 기능을 구성하고 싶습니다. 나는 다른 기능과 패키지의 .\R\ 하위 디렉토리에 새 파일 methods.R을 추가

> library(mylibrary) 
> helloYouToo() 
Error in helloYouToo() : could not find function "helloYouToo" 
: 나는 패키지를 다시 작성하고 라이브러리를 다시로드 할 때

helloYouToo <- function() { 
    print("Hello you too!") 
} 

그러나, 나는 기능에 액세스 할 수 없습니다

몇 가지 질문이 있습니다. 어떻게해야 내가

  1. 나누어 여러 개의 파일로 패키지 기능 (단지 하나의 hello.R 파일) 파일과 기능이 패키지에 포함 된 정의하고,
  2. 도 액세스 할 수있는 선호하는 방법은 무엇입니까 있도록 패키지 내에서 동일한 패키지 내에서 정의되었지만 다른 파일 (예 : methods.R)에 정의 된 기능은 무엇입니까?
+0

파일을 추가 할 때 초보자 용 설명서를 읽으려고했지만 패키지의 모든 기능을 단일 파일로 작성하는 데 집중하는 것 같습니다. – Heikki

+1

NAMESPACE 페이지에서 함수를 내 보냅니 까? 문서 작성을 위해 roxygen을 사용하고 있습니까? "R 패키지"또는 "R 패키지를 사용하여 devtools"를 선택 했습니까? 아직 읽지 않았다면 [Hadley 's R packages guide] (http://r-pkgs.had.co.nz/) – MrFlick

+0

을 읽어야합니다. R 3.4.2를 사용하고 있으며 devtools를 설치하는 것은 최근에 가능 해졌습니다. 그래서 devtools를 설치하고 roxygen을 설치 한'devtools :: load_all()'을 실행하려고했습니다.그런 다음'devtools :: load_all()'을 실행하면 패키지를 생성하는 R 세션에서'helloYouToo()'를 사용할 수 있습니다. 그러나 다른 R 세션에서이 기능을 사용할 수 있도록 만들지 않았습니다. 죄송하지만, 다른 R 세션을 다시 시작하면 도움이되고 그 후에'library (mylibrary)'는'helloYouToo()'를 사용할 수있게됩니다. – Heikki

답변

0

@MrFlick이 제시 한대로 devtoolsroxygen (종속성 포함)을 설치하여 여러 파일에 기능을 분할했습니다.

그런 다음 패키지를 다시 빌드하면 패키지를로드하는 사용자가 사용할 수있는 다른 파일의 새 기능이 만들어집니다.

:

Restarting R session... 

> library(mylibrary) 
> helloYouToo() 
[1] "Hello you too!" 

패키지에 두 개의 별도의 파일에 정의 된 함수를 사용하는 함수를 정의하는 것도 가능했다 : 그러나, 업데이트 된 함수 정의를 사용할 수 있도록하기 위해 R 세션을 다시 시작해야했다

helloDouble <- function() { 
    hello() 
    helloYouToo() 
} 

이 같은 일반

로하기 때문에 내가 네임 스페이스 파일을 터치 필요가 없었다

Restarting R session... 

> library(mylibrary) 
> helloDouble() 
[1] "Hello, world!" 
[1] "Hello you too!" 

로 결과

exportPattern("^[[:alpha:]]+") 

패키지에서 만든 모든 새 기능을 패키지 사용자가 사용할 수 있도록 허용합니다.

관련 문제