मैं एक फ़ंक्शन बनाने की कोशिश कर रहा हूं जो पहले n विषम पूर्णांक का योग लेता है, अर्थात i = 1 से n के (2i-1) तक का योग।

  • यदि n = 1 तो इसे 1 आउटपुट चाहिए
  • अगर n = 2 यह 4 आउटपुट चाहिए

मुझे एक लूप का उपयोग करने में समस्या हो रही है जो केवल nth टर्म आउटपुट करता है

n <-2
for (i in 1:n)
{ 
  y<-((2*i)-1)                    
}
y
1
Baylord Maximus 3 पद 2015, 04:52

3 जवाब

सबसे बढ़िया उत्तर

इसे इस्तेमाल करे:

sum=0 
n=2
for(i in seq(1,2*n,2)){
   sum=sum+i
}

लेकिन, ज़ाहिर है, आर छोरों के साथ काम करते समय धीमी है। इसलिए व्यक्ति को इनसे बचना चाहिए।

2
Alexandre Cartaxo 3 पद 2015, 02:08

आर प्रोग्रामिंग में हम लूप से बचने की कोशिश करते हैं

cumsum  ( seq(1,2*n, by=2)  ) 

या यदि आप आंशिक रकम की श्रृंखला नहीं चाहते हैं तो बस 'योग' का उपयोग करें।

5
IRTFM 3 पद 2015, 02:07

वास्तव में लूप का उपयोग करने या पहले n विषम संख्याओं के अनुक्रम के निर्माण की कोई आवश्यकता नहीं है - यह एक अंकगणितीय श्रृंखला है, इसलिए हम बंद रूप में पहले n तत्वों का योग जानते हैं:

sum.first.n.odd <- function(n) n^2
sum.first.n.odd(1)
[1] 1
sum.first.n.odd(2)
[1] 4
sum.first.n.odd(100)
[1] 10000

यह for या sum पर आधारित किसी भी समाधान की तुलना में अधिक कुशल होना चाहिए क्योंकि यह अनुक्रम के तत्वों की गणना कभी नहीं करता है।

[[सिर्फ शीर्षक देखकर - ओपी स्पष्ट रूप से विश्लेषणात्मक परिणाम जानता है और कुछ और चाहता था ...]]

3
josliber 3 पद 2015, 02:15