2012-11-25 1 views
57

abc.R 파일에 정의 된 함수를 다른 파일, 즉 xyz.R에서 호출하려면 어떻게해야합니까?하나의 .R 파일에있는 모든 함수를 정의하고 다른 .R 파일에서 호출하십시오. 가능하면 어떻게 될까요?

추가 질문은 R 프롬프트/명령 줄에서 abc.R에 정의 된 함수를 어떻게 호출합니까? .

fooABC <- function(x) { 
    k <- x+1 
    return(k) 
} 

및 xyz.R은 다음과 같습니다 :

+4

. 좀 더 진지하게'소스'를 들여다. – Dason

답변

88

abc.R 인 경우 당신은

이러한 파일을 모두 현재 작업 디렉토리에 있다고 가정 source("xyz.R") (다음 source("abc.R")를 호출 할 수 있습니다

fooXYZ <- function(x) { 
    k <- fooABC(x)+1 
    return(k) 
} 

그러면 작동합니다.

> source("abc.R") 
> source("xyz.R") 
> fooXYZ(3) 
[1] 5 
> 

주기적 종속성이 있어도 작동합니다.

예.

fooABC <- function(x) { 
    k <- barXYZ(x)+1 
    return(k) 
} 

barABC <- function(x){ 
    k <- x+30 
    return(k) 
} 

및 xyz.R이있다 : abc.R이 있다면 그 함수를 사용하여 다음

fooXYZ <- function(x) { 
    k <- fooABC(x)+1 
    return(k) 
} 

barXYZ <- function(x){ 
    k <- barABC(x)+20 
    return(k) 
} 

,

> source("abc.R") 
> source("xyz.R") 
> fooXYZ(3) 
[1] 55 
> 
+7

뉘앙스 : 파일/함수를 한 번만'소스 화 '하면된다. 그런 다음 작업 공간에 있으며 언제든지 사용할 수 있습니다. 변경 한 경우 다시 소스해야합니다. 코드를 변환 한 이후에 기능이 많이 바뀌는 경우, 모든 파일을 하나의 파일에 저장하고 매번 전체 소스를 가져와야합니다. 또한 더 큰 기능 모음을 제공하는 작은 파일을 별도로 만들 수도 있습니다. 2. 테스트 사례를 실행합니다. R에는 작업 흐름을 정렬 할 수있는 여러 가지 방법이 있습니다. –

+4

뉘앙스 주셔서 감사합니다, Bryan. 나는 이것을 절차 적 언어의 대부분의 사람들이 궁금해 할 수있는 2 가지 시나리오로 시연했다. 순환 종속성을 추가하기 위해 파일을 편집 한 것처럼 보이며,이 경우 순환 소거가 파일의 소스에 영향을 미치지 않습니다. –

+0

감사합니다. @A_K : 주기적 종속성 문제를 강조해 주셔서 감사합니다. "can-be-improved"R 문서를 통해 몇 시간 동안 나를 파 냈습니다. :) –