2016-07-21 18 views
0

Ich habe eine Reihe von data.frame-Objekten und einem einzigen data.frame Objekte. Ich versuche, sie auf Bestellung in die Liste aufzunehmen. Ich habe versucht, diese Art von Manipulation zu entfernen, aber es wird am Ende keine korrekte Ausgabe liefern. Kann mir jemand dazu Ideen geben? Vielen Dankrelist ein data.frame-Objekt und fügen Sie es in der vorhandenen Liste nach Reihenfolge

simulierte Daten:

bleh <- data.frame(
    start=seq(1, by=9, len=18), end=seq(6, by=9, len=18), 
    ID=letters[seq(1:18)], score=sample(1:25, 18, replace = FALSE)) 

d.list <- list(
    foo <- data.frame(
    start=seq(2, by=11, len=20), end=seq(8, by=11, len=20), 
    ID=letters[seq(1:20)], score=sample(1:25, 20, replace = FALSE)), 
    bar <- data.frame(
    start=seq(4, by=11, len=25), end=seq(9, by=11, len=25), 
    ID=letters[seq(1:25)], score=sample(1:25, 25, replace = FALSE)) 
) 

gewünschte Ausgabe:

out <- list(blesh, d.list[1], d.list[2]) 

Wenn ich die d.list abgeflachte und alle Objekte in der Liste neu zu gestalten, ist es nicht richtig von Konzept ist, weil unlist-Methode wird d.list als ein Objekt abflachen, das heißt, ich stoppe diese Dinge passieren. Kennt jemand den Trick, diese Art von Manipulation zu machen?

Antwort

1

Sie können die concatenation Methode c verwenden, nachdem Sie das einzelne Datenrahmenobjekt in eine Liste eingeschlossen haben. c Wenn Sie auf Listen angewendet werden, werden Listen auf der ersten Ebene verflacht und dann die Unterlisten miteinander verkettet, was Ihnen das geben soll, was Sie brauchen.

out <- c(list(bleh), d.list) 

lapply(out, head, 3) 
# [[1]] 
# start end ID score 
# 1  1 6 a 16 
# 2 10 15 b 18 
# 3 19 24 c  7 

# [[2]] 
# start end ID score 
# 1  2 8 a 23 
# 2 13 19 b  1 
# 3 24 30 c 16 

# [[3]] 
# start end ID score 
# 1  4 9 a 16 
# 2 15 20 b  8 
# 3 26 31 c 10 
+1

Vielen Dank. Dieser Trick funktioniert sicherlich sehr gut. Prost – user88911

+0

@ user88911 Keine Probleme. Schön, dass es hilft. :) – Psidom