2012-06-19 9 views
8

Wie kann ich eine Folge von Zahlen erzeugen, die in Geometrische Progression in R sind? Zum Beispiel muss ich die Sequenz erzeugen: 1, 2,4,8,16,32 und so weiter ... bis ein endlicher Wert gesagt wird?Zahlen in Geometrischer Progression

+9

'2^seq (0, 5, by = 1)' – baptiste

Antwort

6

Hier ist, was ich tun würde:

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

danke, kannst du bitte meinen Kommentar oben sehen und mir sagen, ob ich diesen Code auf diese Weise schreiben kann? Ich bin ein Neuling und habe daher viele Zweifel :( – Maddy

+0

Was ist dein ultimatives Ziel? Schreibst du ein Skript, um etwas in R zu tun und wenn ja, was versuchst du damit? Wenn du neu bist bei R, eine kleine Studie wird auf mittlere Sicht viel helfen Diese Frage hat viele Ressourcen: http://stackoverflow.com/questions/192369/books-for-learning-the-r-language – SlowLearner

+0

@Maddy - Josh's Antwort ist was "geomSeries (2,32)' wie in seiner Antwort skizziert geben Ihnen eine Basis 2 Fortschritt bis zum Maximalwert von 32. – thelatemail

4

Warum nicht einfach 2^(0: n) eingeben? Z.B. 2^(0: 5) bringt Sie von 1 bis 32 und so weiter. den Vektor erfassen, indem wie so einer Variablen zugewiesen: x <-2^(0: 5)

+0

wenn i eine Sequenz will von etwa 1 bis 100, um 10 inkrementiert, i schreiben: seq (1, 100, durch = 10). Also jetzt will ich eine Sequenz von 1 bis 1000, die geometrisch wie 1, dann 2, dann 4 und so weiter erhöht. – Maddy

+0

So etwas, um eine geometrische Progression zu erhalten, die immer unter der angegebenen Zahl endet (die 1000 in diesem Fall): '2^(1: floor (log (1000,2)))' – thelatemail

+2

Schlagen Sie einen Blick auf ' seq() ', wie oben im Kommentar des Baptisten erwähnt. Do '?' Und der Funktionsname, um Hilfe zu einer R-Funktion zu bekommen, also '? Seq'. In diesem Fall wollen Sie etwas wie 'seq (0, 10, by = 10)'. Beachten Sie, dass von 0 bis 100 geht, nicht 1 bis 100, was keine Serie mit regelmäßigen Abständen ist. – SlowLearner

3

Sie einen beliebigen Begriff in einer geometrischen Folge finden mit dieser mathematischen Funktion:

Begriff = start * Verhältnis ** (n-1)

Wo: 012.
term = der Begriff in der gewünschten Reihenfolge
start = der erste Term in der Sequenz
ratio = das gemeinsame Verhältnis (d. H. das Vielfache, das die Sequenz definiert)
n = die Nummer des Ausdrucks in der gewünschten Sequenz

Schreiben Sie mithilfe dieser Informationen eine Funktion in R, die eine beliebige Teilmenge einer geometrischen Sequenz für jeden Start und jedes Verhältnis bereitstellt:

#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