Dude193
20-10-2006, 11:09
Hallo,
ich habe mal wieder ein neues R-Problem mitgebracht. Ich habe folgende Funktion geschrieben:
analyseRecHistSimAgg <- function(treeID, pfID, histSimVecs, eps, refDate) {
#
# operates on global data frame histSimVecs
#
if (treeID == 1) risktype = 10 else risktype = 24
treePrefix <- ifelse(treeID == 1, "y", "z")
childIDs <- aDBTrees$portfolioid[aDBTrees$treeid == treeID & aDBTrees$parentid == pfID]
for (childID in childIDs) {
index <- which(aDBTrees$treeid == treeID & aDBTrees$portfolioid == childID)
if (!aDBTrees$is.leaf[index]) {
aggDifference <- histSimVecs[[refDate]][[paste(sep="",treePrefix,childID)]]
difference <- VarVecs$DIFFERENCE[as.Date(VarVecs$BUSINESSDAY)==(as.Date(refDate)-1) & VarVecs$PORTFOLIOID==childID & VarVecs$RISKTYPEID==risktype]
if (sum((abs(difference - aggDifference)/abs(difference))) > 250 * eps)
localList <- c(localList , childID)
analyseRecHistSimAgg(treeID, childID, histSimVecs, eps, refDate)
}
}
return(localList)
}
Diese hangelt sich in einer Baumstruktur immer weiter nach unten und geht jeden Pfad ab. Jetzt möchte ich Portfolien suchen, die falsch berechnet wurden, wofür ich die if-Abfrage
if (sum((abs(difference - aggDifference)/abs(difference))) > 250 * eps)
habe. Falls diese wahr ist, soll er mir den Portfoiliennamen in einer Liste abspeichern.
Am Ende möchte ich dann eine Liste mit allen Portfolien, die fehlerhaft berechnet wurden.
Hier ist aber mein Problem. Da ich dieses Rekursiv berechne und er so die Berechnung des ersten Knotens als letztes beendet, bekomme ich auch immer nur eine Liste mit falsch berechneten Protfolien aus dieser "Ebene"
Ich hoffe es hat überhaupt jemand verstanden, wo mein Problem liegt ;)
Und natürlich, dass mir da jemand helfen kann!!!!
Gruss und Danke,
DUDE...
ich habe mal wieder ein neues R-Problem mitgebracht. Ich habe folgende Funktion geschrieben:
analyseRecHistSimAgg <- function(treeID, pfID, histSimVecs, eps, refDate) {
#
# operates on global data frame histSimVecs
#
if (treeID == 1) risktype = 10 else risktype = 24
treePrefix <- ifelse(treeID == 1, "y", "z")
childIDs <- aDBTrees$portfolioid[aDBTrees$treeid == treeID & aDBTrees$parentid == pfID]
for (childID in childIDs) {
index <- which(aDBTrees$treeid == treeID & aDBTrees$portfolioid == childID)
if (!aDBTrees$is.leaf[index]) {
aggDifference <- histSimVecs[[refDate]][[paste(sep="",treePrefix,childID)]]
difference <- VarVecs$DIFFERENCE[as.Date(VarVecs$BUSINESSDAY)==(as.Date(refDate)-1) & VarVecs$PORTFOLIOID==childID & VarVecs$RISKTYPEID==risktype]
if (sum((abs(difference - aggDifference)/abs(difference))) > 250 * eps)
localList <- c(localList , childID)
analyseRecHistSimAgg(treeID, childID, histSimVecs, eps, refDate)
}
}
return(localList)
}
Diese hangelt sich in einer Baumstruktur immer weiter nach unten und geht jeden Pfad ab. Jetzt möchte ich Portfolien suchen, die falsch berechnet wurden, wofür ich die if-Abfrage
if (sum((abs(difference - aggDifference)/abs(difference))) > 250 * eps)
habe. Falls diese wahr ist, soll er mir den Portfoiliennamen in einer Liste abspeichern.
Am Ende möchte ich dann eine Liste mit allen Portfolien, die fehlerhaft berechnet wurden.
Hier ist aber mein Problem. Da ich dieses Rekursiv berechne und er so die Berechnung des ersten Knotens als letztes beendet, bekomme ich auch immer nur eine Liste mit falsch berechneten Protfolien aus dieser "Ebene"
Ich hoffe es hat überhaupt jemand verstanden, wo mein Problem liegt ;)
Und natürlich, dass mir da jemand helfen kann!!!!
Gruss und Danke,
DUDE...