2017-08-17 3 views
0

Ich versuche, um eine Schleife zu schreiben, die durch Spalten 64:111 in einem Datenrahmen iteriert werden, und setzte [64,1] = 0, dann [65,1:2] = 0, dann [66,1:3] = 0 etc (Months_out beginnt bei 0 und Inkrementen von 1). Ich kann nicht sagen, warum meine Schleife nur einmal läuft, was mache ich falsch?For-Schleife nicht durch Spalte Iterieren r

for (i in 64:111) { 
    Prod1[cbind(1:Prod1$Months_Out+1,i)] <- 0 
} 
+2

Es wäre hilfreich, wenn Sie ein Beispiel [reproducable] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) mit Beispieleingabe und gewünschter Ausgabe bereitstellen würden. Es wäre wahrscheinlich sicher, das Problem auf eine überschaubare Größe für die Frage zu reduzieren. – MrFlick

+1

Wenn Sie die Spalten 64 bis 111 durchlaufen, was bedeutet '[64,1] = 0 '? Dies bedeutet typischerweise das Element in Zeile 64 und Spalte 1. Wenn das falsch ist, ändern Sie bitte Ihre Schreibweise, um mit den Standards "[r, c]" übereinzustimmen, die in Mathematik, Statistik und den meisten wenn nicht allen Programmiersprachen üblich sind R. – lmo

+0

Vielen Dank für Ihre Antworten, und ich entschuldige mich, ich habe die Reihenfolge der Zeilen und Spalten verwechselt. Deine Lösung hat es für mich gemacht Alex P, danke für die Hilfe! – Jess

Antwort

1

Für eine Sache, die data.frame Teilmenge geht wie df[row,column] Es scheint, wie Sie, dass nach hinten haben könnte. Zweitens bin ich nicht sicher, warum Sie cbind() innerhalb der Klammern einer Dataframe-Teilmenge verwenden.

Hier ist, wie könnte ich es tun:

rows <- 1 
for (i in 64:111) { 
    Prod1[1:rows, i] <- 0 
    rows = rows+1 
} 

diese Arbeit für Sie?