Fehler in *tmp*[[j]] : subscript out of bounds
Entschuldigung für den langen post! Ich bin neu in R und haben hart gearbeitet, zur Verbesserung meiner Sprachkenntnisse. Ich stolperte über dieses interessante Projekt auf der Modellierung Fußball Ergebnisse: http://www1.maths.leeds.ac.uk/~voss/Projekte/2010-Sport - /JamesGardner.pdf
Halte ich in Probleme laufen, wenn ich den code ausführen, um die Simulation einer kompletten Saison (erstmals erwähnt Seite 36 Anhang Seite 59):
Games <- function(parameters)
{
teams <- rownames(parameters)
P <- parameters$teams
home <- parameters$home
n <- length(teams)
C <- data.frame()
row <- 1
for (i in 1:n) {
for (j in 1:n) {
if (i != j) {
C[row,1] <- teams[i]
C[row,2] <- teams[j]
C[row,3] <- rpois(1, exp(P[i,]$Attack - P[j,]$Defence + home))
C[row,4] <- rpois(1, exp(P[j,]$Attack - P[i,]$Defence))
row <- row + 1
}
}
}
return(C)
}
Games(TeamParameters)
Die Antwort, die ich bekommen, ist
Error in `*tmp*`[[j]] : subscript out of bounds
Wenn ich Versuch einen traceback(), das ist, was ich bekomme:
3: `[<-.data.frame`(`*tmp*`, row, 1, value = NULL) at #11
2: `[<-`(`*tmp*`, row, 1, value = NULL) at #11
1: Games(TeamParameters)
Verstehe ich nicht wirklich, was der Fehler bedeutet und ich würde für jede Hilfe dankbar. Noch einmal, Entschuldigung für den langen post, aber ich bin wirklich interessiert an diesem Projekt und würde gerne erfahren, was das problem ist!
InformationsquelleAutor Clatty Cake | 2012-08-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Daten.frame-Objekte sind nicht erweiterbar, indem Sie die Zeile mit der
[<-.data.frame
Betrieb. (Sie würden verwenden müssenrbind
.) Sollten Sie ein Objekt erstellen, das über ausreichend Speicherplatz verfügt, entweder ein pre-dimensionierte matrix oder data.frame. Wenn "C" ist ein Objekt von 0 Zeilen, dann versuchen zu zuordnen Zeile ein Fehler auf. Es gibt eine Funktion namens "C", so möchten Sie vielleicht, um seinen Namen etwas deutlicher. Es scheint auch wahrscheinlich, dass es effizientere Methoden als das doppelte Schleife, aber Sie haben nicht beschreiben, das parameter-Objekt sehr gut.Können Sie feststellen, dass die im Anhang zu diesem Papier, die Sie zitiert, zeigt, wie pre-dimension einen dataframe:
... und die Spiele-Objekt wurde davon ausgegangen, bereits die richtige Anzahl von Zeilen und die Ergebnisse der Berechnungen wurden die Zuordnung neuer Werte in der Spalte. Die
$<-
operation erfolgreich sein wird, wenn es keinen aktuellen Wert für die referenzierte Spalte.InformationsquelleAutor 42-