하나의 .R 파일에 모든 함수를 정의하고 다른 .R 파일에서 호출합니다. 가능하다면 어떻게?


95

다른 파일 (예 : xyz.R)의 abc.R 파일에 정의 된 함수를 어떻게 호출합니까?

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

답변:


140

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

abc.R이 다음과 같은 경우 :

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

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

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

그러면 작동합니다.

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

순환 종속성이 있어도 작동합니다.

예 : abc.R이 다음과 같은 경우 :

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

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

xyz.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
>

10
뉘앙스 : source파일 / 함수는 한 번만 있으면됩니다. 그런 다음 작업 공간에 있으며 언제든지 사용할 수 있습니다. 변경하면 리소스를 다시 확보해야합니다. 코드를 변환 한 후 함수가 많이 변경되는 경우 모두 하나의 파일에 넣고 매번 모든 것을 소싱하십시오. 1. 더 큰 함수 컬렉션을 소싱하고 2. 테스트 케이스를 실행하는 별도의 작은 파일을 가질 수도 있습니다. R에는 작업 흐름을 정렬하는 방법이 많이 있습니다.
Bryan Hanson

5
뉘앙스에 감사드립니다, 브라이언. 나는 이것을 절차 적 언어의 대부분의 사람들이 궁금해 할 수있는 두 가지 시나리오로 시연했습니다. 파일이 순환 종속성을 추가하기 위해 편집 된 것과 같습니다.이 경우 리소스가 필요하며 (표시된대로)주기가 파일 소싱에 영향을주지 않습니다.
A_K

두 분 모두 감사합니다. @A_K : 순환 의존성 문제를 강조 해주셔서 감사합니다. "개선 될 수있는"R 문서를 파헤치는 데 몇 시간을 절약했습니다. :)
G Shah
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.