2012-06-19 16 views
8

मैं आर में ज्यामितीय प्रगति में संख्याओं का अनुक्रम कैसे उत्पन्न कर सकता हूं? उदाहरण के लिए मुझे अनुक्रम उत्पन्न करने की आवश्यकता है: 1, 2,4,8,16,32 और इसी तरह .... एक सीमित मूल्य कहने तक?जियोमेट्रिक प्रगति में संख्या

+9

'2^seq' – baptiste

उत्तर

6

यहाँ मैं क्या कर चाहते हैं:

geomSeries <- function(base, max) { 
    base^(0:floor(log(max, base))) 
} 

geomSeries(base=2, max=2000) 
# [1] 1 2 4 8 16 32 64 128 256 512 1024 

geomSeries(3, 100) 
# [1] 1 3 9 27 81 
+0

धन्यवाद, क्या आप ऊपर मेरी टिप्पणी देख सकते हैं और मुझे बता सकते हैं कि क्या मैं इस कोड को उस फैशन में लिख सकता हूं? मैं एक नौसिखिया हूं और इसलिए बहुत सारे संदेह हैं :( – Maddy

+0

आपका अंतिम लक्ष्य क्या है? क्या आप आर में कुछ करने के लिए एक स्क्रिप्ट लिख रहे हैं और यदि हां, तो आप इसके साथ क्या करने की कोशिश कर रहे हैं? यदि आप आर के लिए नए हैं, एक छोटा सा अध्ययन मध्यम अवधि में बहुत मदद करेगा। इस प्रश्न में बहुत सारे संसाधन हैं: http://stackoverflow.com/questions/192369/books-for-learning-the-r-language – SlowLearner

+0

@ मैडी - जोश का जवाब यही है आप चाहते हैं कि मैं मानता हूं। 'geomSeries (2,32) 'जैसा कि उसकी प्रतिक्रिया में उल्लिखित है, आपको 32 के अधिकतम मूल्य तक आधार 2 प्रगति प्रदान करेगा। – thelatemail

4

क्यों न केवल 2^(0: n) दर्ज करें? जैसे 2^(0: 5) आपको 1 से 32 तक ले जाता है और इसी तरह। की तरह एक चर को बताए द्वारा वेक्टर कैद तो: एक्स < - 2^(0: 5)

+0

जब मैं कहता हूँ 100 1 से एक दृश्य, 10 से incrementing चाहते हैं, मैं लिखने (0, 5, = 1 से): seq (1, 100, से = 10)। तो अब मैं 1 से 1000 का अनुक्रम चाहता हूं जो ज्यामितीय रूप से 1, फिर 2, फिर 4 और इसी तरह की वृद्धि करता है। – Maddy

+0

ऐसा कुछ ऐसा है जो एक ज्यामितीय प्रगति प्राप्त करता है जो हमेशा निर्दिष्ट संख्या से कम समाप्त होता है (इस मामले में 1000): '2^(1: मंजिल (लॉग (1000,2)))' – thelatemail

+2

सुझाव है कि आप ' seq() ', ऊपर बपतिस्मा की टिप्पणी के अनुसार। आर 'फ़ंक्शन पर सहायता प्राप्त करने के लिए' '' और फ़ंक्शन नाम करें, इसलिए '? Seq'। इस मामले में आप कुछ 'seq (0, 10, by = 10)' चाहते हैं। ध्यान दें कि 0 से 100 तक, 1 से 100 तक नहीं, जो नियमित रूप से दूरी वाली श्रृंखला नहीं है। – SlowLearner

3

आप एक ज्यामितीय अनुक्रम में किसी भी पद मिल सकता है इस गणितीय समारोह के साथ:

अवधि = शुरू * अनुपात ** (एन-1)

कहाँ: 012,
शब्द = अनुक्रम में शब्द जो आप चाहते हैं
प्रारंभ = क्रम में पहला शब्द
अनुपात = सामान्य अनुपात (यानी। अनुक्रम को परिभाषित करने वाले एकाधिक)
n = अनुक्रम में शब्द की संख्या

इस जानकारी का उपयोग करके, आर में एक फ़ंक्शन लिखें जो किसी भी प्रारंभ और अनुपात के लिए ज्यामितीय अनुक्रम का कोई सबसेट प्रदान करता है:

#begin = beginning of subset 
#end = end of subset 

geomSeq <- function(start,ratio,begin,end){ 
    begin=begin-1 
    end=end-1 
    start*ratio**(begin:end) 
} 

geomSeq(1, 2, 1, 10) 
# [1] 1 2 4 8 16 32 64 128 256 512 

geomSeq(10,3,1,8) 
# [1] 10 30 90 270 810 2430 7290 21870 

geomSeq(10,3,4,8) 
# [1] 270 810 2430 7290 21870 

More on geometric sequences