प्राइस ट्रेंड्स के लिए नेस्टेड foreach लूप्स
स्टॉक मार्केट अपने अप्रत्याशित व्यवहार के लिए जाना जाता है। आप एक इन्वेस्टमेंट फर्म में काम करते हैं और आपके बॉस एक हफ्ते की विंडो में स्टॉक प्राइसेज़ के ट्रेंड्स देखना चाहते हैं.
आपने 2015 से दस टेक कंपनियों के डेली स्टॉक प्राइस का डेटा एकत्र किया है। आपकी टीम के डेटा साइंटिस्ट ने रिग्रेशन मॉडल फिट करने का कोड दिया है। आप इस कोड को foreach(), %:%, और %dopar% का उपयोग करके पैरेललाइज़ करने की योजना बना रहे हैं.
इटरेट करने के लिए कुल कॉलमों की संख्या आपके वर्कस्पेस में ncols के रूप में, और रो की संख्या nrows के रूप में सेव है। parallel, doParalel, और foreach पैकेज आपके लिए लोड किए गए हैं। क्लस्टर cl सेटअप कर दिया गया है। आपको नेस्टेड foreach() लूप्स लिखने हैं.
यह अभ्यास पाठ्यक्रम का हिस्सा है
R में पैरेलल प्रोग्रामिंग
अभ्यास निर्देश
foreachलूप्स के साथ उपयोग के लिए क्लस्टर रजिस्टर करें.- एक foreach लूप लिखिए जो कॉलम 1 से
ncolsतक इटरेट करे, परिणामों को"cbind"से इकट्ठा करे, और नेस्टिंग ऑपरेटर का उपयोग करे. - दूसरा foreach लूप लिखिए जो रो 1 से
nrowsतक इटरेट करे, परिणामों को"c"से इकट्ठा करे, और do-parallel ऑपरेटर का उपयोग करे. - सभी कंप्यूटेशन पूरे होने पर क्लस्टर बंद करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# Register the cluster to use with %dopar%
___
# Use foreach loop to iterate over columns one to ncol
moving_trend <- foreach(___, ___) %:%
# Iterate over rows one to nrows within each column
foreach(___, ___) %dopar% {
prices <- data[row:(row + 6), col]
if (any(is.na(prices))) NA
else {days <- 1:7
model <- lm(prices ~ days)
model$coefficients[2]}
}
# Stop cluster
___
print(paste("Total number of models fit:", sum(!is.na(moving_trend))))