R: Warum ist mein Vektor ungeordnet?
Frage
Lassen Sie uns sagen, ich habe diesen Zoo Vektor
mine <- zoo(c(rep(0,4),rep(1,4),rep(0,5),rep(1,23),rep(0,4),rep(1,2)),as.chron(seq(1:42)))
Und ich möchte mehrere Elemente in einer bestimmten Reihenfolge
extrahieren> mine[14]
01/15/70
1
> mine[5]
01/06/70
1
> mine[41]
02/11/70
1
Es funktioniert !. Aber jetzt versuche ich es auf eine andere Art und Weise zu tun,
zz <- c(14, 5, 41)
mine[zz]
01/06/70 01/15/70 02/11/70
1 1 1
Ich weiß nicht, warum ich es in einer anderen Reihenfolge bekommen. Wie kann ich die Reihenfolge halte ich die Reihenfolge meiner Liste will ?? Ich habe nichts dagegen, wenn es sich um eine Liste ist, ein Vektor, durch Spalten oder Zeilen, aber ich möchte es in Ordnung bringen ich gebeten habe.
cheers
Lösung
Die Antwort, warum dieser Zoo tut, ist, dass es ein Verfahren für die Funktion [
([.zoo
) hat, und es erzeugt ein neues Zoo-Objekt aus den subsetted Werten, die es logisch so neu zu ordnen will, dass es ein gültiges Zoo Objekt .
können Sie erreichen, was Sie wollen, indem sie die Zeitindizes und Daten über die entsprechenden Zugriffsfunktionen zuzugreifen:
> index(mine)[c(14, 5, 41)]
[1] 01/15/70 01/06/70 02/11/70
> coredata(mine)[c(14, 5, 41)]
[1] 1 1 1
Wenn Sie dies in einem einzigen Schritt kombinieren möchten, schreiben Sie Ihren eigenen Spaß zu tun:
myExtract <- function(x, want) {
out <- coredata(mine)[want]
names(out) <- index(x)[want]
out
}
Was gibt:
> myExtract(mine, want = c(14, 5, 41))
01/15/70 01/06/70 02/11/70
1 1 1