Ich habe wahrscheinlich eine dumme Frage, aber ich kann einfach nicht verstehen, die Logik dahinter.For-Loop-Anweisung Verständnis
Question 1:
a = c(10,20,30)
b = c(15,30,45)
c = cbind(a,b)
for (i in 1:ncol(c))
{d[i] = c[i]+2}
print(d)
# Error d not defined
Dann dachte ich, vielleicht brauche ich einen Platzhalter für die Frage, so habe ich die folgenden:
Question 2:
d = matrix(NA, 3,2) # now have the same dimension as c
for (i in 1:ncol(c)){d[i] = c[i]+2}
der Ausgang
ist [,1] [,2]
[1,] 12 NA
[2,] 22 NA
[3,] NA NA
Ich kann die obige Ausgabe nicht interpretieren. Ich verstehe nicht, warum ich NA bekommen in Reihe 3.
Ich habe auch versucht die folgenden:
for (i in 1:ncol(c)){d[,i] = c[,i]+2}
dann habe ich die richtige Antwort, aber wenn ich das versucht folgende Ich erhalte eine Fehlermeldung:
Question 3:
for (i in 1:ncol(c)){d[i] = c[,i]+2}
Warning messages:
1: In d[i] = c[, i] + 2 :
number of items to replace is not a multiple of replacement length
2: In d[i] = c[, i] + 2 :
number of items to replace is not a multiple of replacement length
Ich weiß, ich habe eine Menge Fragen gestellt, aber wenn Sie sie für einen Dummy beantworten können, werde ich es sehr zu schätzen wissen.
'c()' ist eine Funktion. Im Allgemeinen ist es eine schlechte Übung, etwas anderem zu 'c' zuzuweisen. – cory
in Q1 d ist nicht definiert –
Ich glaube nicht, dass ich Ihnen helfen kann, da Ihr Beitrag sehr stark von Code abhängt, der davor ausgeführt wurde. (wie @ 42 in der Antwort sagt). Wenn Sie immer noch verwirrt sind, ** starten Sie Ihre R-Sitzung ** neu und führen Sie Code für Zeile nacheinander aus. Es ist wichtig, in einer sauberen R-Sitzung zu beginnen, damit die Dinge reproduzierbar sind. Ich denke auch, dass es viel besser ist, wenn Sie mit einem ** Ziel ** beginnen, nicht nur mit einem Code, der verwirrend ist. Was ist das Ziel des Codes? Lasst uns daran arbeiten, * wie man ein Ziel erreicht *, nicht * wie man etwas kaputt * versteht. – Gregor