2012-11-25 25 views

cevap

88

abc.R ise Sen

bu dosyalar hem geçerli çalışma dizini olduğunu varsayarak source("xyz.R") (izledi source("abc.R") çağırabilir

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

sonra bu çalışacaktır:

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

Döngüsel bağımlılıklar olsa bile, bu işe yarayacaktır.

E.g.

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

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

ve xyz.R şudur: abc.R bu ise bu işlevleri kullanarak sonra

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

A nuance: sadece bir kere bir dosya/işlev kaynağına 'sahip olmanız yeterlidir. Sonra çalışma alanınızda ve istediğiniz zaman kullanabilirsiniz. Eğer değiştirirseniz, yeniden kaynak yapmalısınız. Eğer kodunuz dönüştürüldüğünden fonksiyonlarınız çok değişiyorsa, hepsini tek bir dosyaya koyun ve her şeyi her zaman kaynağınıza verin. Aynı zamanda daha küçük bir dosyaya da sahip olabilirsiniz. 1. daha büyük işlevler toplar ve 2. Test senaryolarınızı çalıştırır. R'de iş akışınızı düzenlemek için birçok yol var. –

+4

Nuance için teşekkürler, Bryan. Bunu, prosedürel dillerden çoğu insanın merak edebileceği 2 senaryo olarak göstermekteydim. Dosyaların döngüsel bağımlılık eklemek için düzenlenmiş olması gibi, bu durumda kaynak gösterilmeleri gerekir (gösterildiği gibi) ve çevrimler dosyaların kaynak kullanımını etkilemez. –

+0

İkinize de teşekkürler. @A_K: döngüsel bağımlılık sorununu vurguladığınız için çok teşekkürler. "İyileştirilmiş" R dokümantasyonunu kazandığımda birkaç saat kazdım :) –