2016-01-29 6 views
6

उदाहरण के लिए, मैं वर्तमान में एक फ़ंक्शन पर काम कर रहा हूं जो आपको यह देखने की अनुमति देता है कि यदि आपने शेयर बाजार में निवेश किया है तो आपके पास कितना पैसा हो सकता है। यह वर्तमान में एक लूप संरचना का उपयोग कर रहा है, जो वास्तव में मुझे परेशान कर रहा है, क्योंकि मुझे पता है कि शायद इसे कोड करने और आर में लीवरेज वैक्टर का एक बेहतर तरीका है। मैं फ़ंक्शन चलाने से पहले डमी वैक्टर भी बना रहा हूं, जो थोड़ा अजीब लगता है।क्या आर में कार्यों को सरल बनाने का कोई तरीका है जो लूप का उपयोग करते हैं?

अभी भी आर में एक शुरुआत (बस शुरू हुआ!), इसलिए किसी भी सहायक मार्गदर्शन की अत्यधिक सराहना की जाती है!

set.seed(123) 
##Initial Assumptions 
initialinvestment <- 50000 # e.g., your starting investment is $50,000 
monthlycontribution <- 3000 # e.g., every month you invest $3000 
months <- 200 # e.g., how much you get after 200 months 

##Vectors 
grossreturns <- 1 + rnorm(200, .05, .15) # approximation of gross stock market returns 
contribution <- rep(monthlycontribution, months) 
wealth <- rep(initialinvestment, months + 1) 

##Function 
projectedwealth <- function(wealth, grossreturns, contribution) { 
    for(i in 2:length(wealth)) 
    wealth[i] <- wealth[i-1] * grossreturns[i-1] + contribution[i-1] 
    wealth 
} 

##Plot 
plot(projectedwealth(wealth, grossreturns, contribution)) 

उत्तर

10

मैं शायद

Reduce(function(w,i) w * grossreturns[i]+contribution[i], 
    1:months,initialinvestment,accum=TRUE) 

लिखते थे लेकिन वह functionals प्रयोग करने के लिए मेरी प्राथमिकता है। यहां for लूप के उपयोग के साथ कुछ भी गलत नहीं है।

+4

इस तरह से ऐसा करने का क्या फायदा है? – Ruben

+2

कोई नहीं, व्यावहारिक रूप से। यह उन लोगों के लिए अधिक मूर्खतापूर्ण है जो कार्यात्मक रूप से सोचते हैं। लेकिन जमा करने के साथ 'कम करें' बस लूप के लिए एक अच्छी तरह से लागू किया गया है। जैसा कि कहा गया है, प्रश्न में 'लूप' के उपयोग के साथ कुछ भी गलत नहीं है। –

संबंधित मुद्दे

 संबंधित मुद्दे