2017-12-29 9 views
-1

Ich habe eine Liste von 51 Datenrahmen, ich muss sie transponieren und dann die ersten beiden Zeilen die neuen Datenrahmen entfernen. Ich versuche zu benutzen, aber nicht mit der Syntax vertraut. Meine Operation ist einfach über einen Datenrahmen zu machen, aber wenn ich lapply für eine Liste von Datenrahmen verwende, habe ich Probleme. Dies ist, was ich für ein Element der Liste an meinem letzten Datenrahmen ankommen tat -Wie transponiere ich eine Liste von Datenrahmen?

john<-t(dflist[["df7"]]) 
john <- john[-c(1,2), ] 

Das Entfernen von Zeilen durch Zeilennummer wird für jeden Datenrahmen in Ordnung sein, da sie in ihrer Struktur gleich sind.

eine Funktion Errichtet die obige Operation auszuführen:

transposer <- function(df) { 
    z<-t(df) 
    df<-z[-c(1,2),] 
} 

Wie verwende ich diese Funktion in lapply?

GELÖST: Suppe < -lapply (gooble, Transposer)

WAS ICH SAGE

Antwort

2

Hier ist ein Ansatz lapply() verwenden.

# generate some data frames 
set.seed(102134) 
id <- 1:5 
aList <- lapply(id,function(x){ 
    data.frame(matrix(runif(50),nrow=10,ncol=5)) 
}) 
# transpose and remove first 2 rows 
transposeList <- lapply(aList,function(x){ 
    t(x)[-c(1,2),] 
}) 
# print first transposed data frame 
transposeList[[1]] 

..und die Ausgabe, unter Hinweis darauf, dass die Zeilen repräsentieren Variablen X1 und X2 in dem ursprünglichen Datenrahmen aus dem Datenrahmen weggelassen wurden wir drucken:

> # print first transposed data frame 
> transposeList[[1]] 
     [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7] 
X3 0.1128006 0.5884873 0.8532827 0.5957727 0.6995990 0.09765447 0.69149804 
X4 0.1239681 0.7624771 0.9756067 0.1251610 0.4954070 0.92652298 0.04800376 
X5 0.3698154 0.6789413 0.9660355 0.6613972 0.5099627 0.97766102 0.97139575 
     [,8]  [,9]  [,10] 
X3 0.7731442 0.03916568 0.8787288 
X4 0.3829343 0.41939016 0.9668663 
X5 0.8865407 0.63437436 0.6774895 
> 

Eine wichtige Feinheit in dieser Antwort ist die Codezeile t(x)[-c(1,2),] in der anonymen Funktion innerhalb lapply(). Da das Ergebnis t(x) ein Objekt ist, können wir sofort die Form des Extraktoperators verwenden, um die ersten beiden Zeilen zu entfernen.

Verwandte Themen