2017-09-26 2 views
0

Ich versuche, den gleichen Faktor Level in 3 getrennten Datenrahmen zu setzen, so habe ich versucht, so effizienter über Liste und Schleife zu tun.R: Loop durch Datenrahmen und Re-assign Faktorstufen

dlist <- list(d1, d2, d3) 
for (i in 1:length(dlist)) { 
    dlist[[i]]$myFactor <- factor(dlist[[i]]$myFactor, levels=c("l1", "l2")) 
} 

Dies scheint sich die Faktorstufen für kopierte Datenrahmen in dlist, aber nicht für die Datenrahmen zu aktualisieren. Wie bekomme ich d1 $ myFactor, d2 $ myFactor, d3 $ myFactor zu ändern?

+1

Sie befinden sich auf einer gemeinsamen R Design-Problem gestolpert. Wenn Sie "d1", "d2" und "d3" haben, haben Sie im Wesentlichen 3 verwandte Objekte. Bedenken Sie, dass Sie setzen 'column1',' column2' und 'column3' alle in einem' data.frame' namens 'd1' die leicht geschlungen über werden kann. Sie sollten ähnlich ähnliche 'data.frame's in' dlist' gruppieren, die Sie dann auch überschleifen können. (Oder alternativ, verbinden sie 'd1/2/3' alle in einem langen data.frame mit einer' id' Spalte mit der Bezeichnung, die sie von Datensatzes ursprünglich kam). – thelatemail

Antwort

2

Wenn Sie die data.frames in der Liste setzen dlist, sind sie nicht mehr mit dem ursprünglichen data.frames. Aktualisieren von Werten in dlist nicht aktualisiert Werte in d1, d2 oder d3.

Sie sollten dlist von hier aus bedienen. Sie können die einzelnen Elemente (data.frames) mit Indexwerten in der Liste referenzieren.

Wenn Sie sie aus der Liste zurück wollen, werden Sie so individuell zu tun haben:

d1 <- dlist[[1]] 
Verwandte Themen