+1 Daumen
5,4k Aufrufe

kennt sich jemand mit dem Programm R aus?

Ich bräuchte Hilfe mit Schleifen in R. Es wäre super, wenn mir jemand die for , while und repeat Schleife erklären würde.. Also ich weiß ya wie diese aufgebaut sind, aber ich weiß nicht wie ich es anwenden soll und welche Befehle ich eingeben soll.

bsp: gegeben sind

Matrix A <- Matrix(1:6, nrow=2)

und ein Vektor cs <- c(NA, NA, NA)

Aufgabe : Geben Sie eine for - , while- und repeat Schleife an, mit der die spaltenweisen Summen der Matrix A berechnet und auf die entsprechende Stelle in dem Vektor cs abgebildet werden. Dabei soll in der i-ten Iteration der Schleife die Summe der i-ten Spalte berechnet werden, i=(1,2,3).

Die Schleifen lauten nun:

for(i in 1:ncol(A)){
    cs[i] <- sum(A[ ,i])
}

i <- 1
while(i <= ncol(A)){
    cs[i] <- sum(A[ ,i])
    i <- i+1
}

i <- 1
repeat{
    cs[i] <- sum(A[ ,i])
    i <- i+1
    if( i > ncol(A))
              break
}
Avatar von

ich weiß nicht wie ich es anwenden soll und welche Befehle ich eingeben soll. "

Was genau willst du erklärt haben? 

Nur diese Befehle oder wie du die Aufgabe programmieren musst?

Hast du schon andere Programme in R zum Laufen gebracht? 

ich weiß nicht, wie ich auf die Befehle kommen soll. bsplw wird zuerst ein i <- 1 definiert. und danach?

Ehm.. joa also die "großen" und umfangreicheren Themen waren Verteilungen und Simulationen, Bedingte Anweisungen und Schleifen, Zeichenketten, Funktionen und Grafiken. meine größten Schwierigkeiten habe ich bei den Schleifen und Grafiken. Der Rest läuft eig ganz gut.

Bei Schleifen in Programmiersprachen gibt es einen Zähler, der der Reihe nach die gewünschten Werte annimmt. Du musst ihm sagen, mit welchem Wert er beginnen soll und wo er aufhören soll zu zählen. (als Option kann man manchmal noch die Zählschritte feiner oder gröber wählen.

Die for - Schleife

for(i in 1:ncol(A)){     | Zähler heisst i und läuft von 1 bis zu Spaltenzahl von A
     cs[i] <- sum(A[ ,i])       | Die Summe aller Elemente von A, die in der Spalte i stehen wird dem Vektor cs zugewiesen (in der Spalte i) . 
}

Der Befehl in der geschweiften Klammer wird immer wieder ausgeführt bis alle Spalten addiert wurden.

Verstehst du das so? Und ist das ungefähr diese Art von Erklärung, die du haben möchtest? 

jaaa genau so meinte ich das. Danke

könntest du auch eine Erklärung zur while und repeat Schleife geben.. weil dort gibt es ja auch ein i <- i+1

1 Antwort

+1 Daumen

i <- 1                    |  der Zähler i wird auf 1 gesetzt.
while(i <= ncol(A)){      | vor der { wird geprüft, ob der Wert des Zählers zulässig ist (kleiner als Spaltenzahl)
    cs[i] <- sum(A[ ,i])  | Summe der Spalte i ausrechnen und speichern in sc[i]
    i <- i+1              | Zähler wird erhöht: überschrieben mit "eins mehr"
}

Er bleibt so lange im while, wie die Bedingung n der runden Klammer neben dem while erfüllt ist.

i <- 1                    | Zähler 1 gesetzt
repeat{
    cs[i] <- sum(A[ ,i])  | Spaltensumme berechnen und speichern
    i <- i+1            | Zähler erhöhen
    if( i > ncol(A))      | Abbruchbedingung
              break
}

Er bleibt so lange im repeat, bis er über das break im if rausfindet. 

Ich hoffe, das hilft dir nun weiter. 

Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community