सभी कार्यों को एक .R फ़ाइल में परिभाषित करें, उन्हें दूसरे .R फ़ाइल से कॉल करें। कैसे, यदि संभव हो तो?


93

मैं किसी अन्य फ़ाइल में abc.R फ़ाइल में परिभाषित कार्यों को xyz.R कैसे कहता हूं?

एक पूरक प्रश्न है, मैं R प्रॉम्प्ट / कमांड लाइन से abc.R में परिभाषित फ़ंक्शन कैसे कॉल करूं?

जवाबों:


137

आप 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
>

9
एक बारीकियों: आप केवल sourceएक बार एक फ़ाइल / कार्य करने के लिए है। फिर यह आपके कार्यक्षेत्र में है और आप इसे किसी भी समय उपयोग कर सकते हैं। यदि आप इसे बदलते हैं, तो आपको इसे पुन: स्रोत करना होगा। यदि आपके कोड को परिवर्तित करने के बाद से आपके कार्य बहुत बदल रहे हैं, तो उन सभी को एक फ़ाइल में रखें और हर बार पूरी बात का स्रोत बनाएं। आपके पास एक अलग छोटी फ़ाइल भी हो सकती है। R में आपके कार्य प्रवाह को व्यवस्थित करने के बहुत सारे तरीके हैं।
ब्रायन हैन्सन

5
शुक्रिया, ब्रायन के लिए धन्यवाद। मैं इसे 2 परिदृश्यों के रूप में प्रदर्शित कर रहा था, जिनके बारे में प्रक्रियात्मक भाषाओं के अधिकांश लोग आश्चर्यचकित हो सकते हैं। यह वैसा ही है जैसे चक्रीय निर्भरता को जोड़ने के लिए फाइलों को संपादित किया गया था, जिस स्थिति में उन्हें पुनर्जीवित किया जाना चाहिए (जैसा कि दिखाया गया है) और चक्र फाइलों की सोर्सिंग को प्रभावित नहीं करते हैं।
A_K

आप दोनों को धन्यवाद। @A_K: चक्रीय निर्भरता मुद्दे को उजागर करने के लिए बहुत बहुत धन्यवाद। मुझे "कैन-बी-इम्प्रूव्ड" आर डॉक्यूमेंटेशन के माध्यम से खुदाई के कुछ घंटे बचाए गए
जी शाह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.