2016-06-30 10 views
1

Ich habe eine Liste von data.frames. Ich möchte einen Zeichenvektor nehmen und seine Werte als Spaltennamen in allen data.frames in der Liste verwenden. Wenn ich versuche, lapply dafür zu verwenden, ich die folgende Fehlermeldung erhalten:lapply und colnames erzeugt ungültigen 'y' Typ in 'x && y' Fehler

Error in is.data.frame(x) && do.NULL : invalid 'y' type in 'x && y'

Hier ein reproduzierbares Beispiel ist:

x = 1:5 
y = 6:10 
z = 11:15 
newnames = c("Var1", "Var2") 
dflist = list("df1" = cbind.data.frame(x,y), "df2" = cbind.data.frame(x,z)) 
str(dflist) 
lapply(dflist, colnames, newnames) 

Antwort

3

die Lösung entdeckt, während des reproduzierbare Beispiel machen. Das Problem ist, dass nicht dasselbe ist wie colnames<-. Der Code in der obigen Frage versucht abzurufen die Spaltennamen von jedem Member von Dflist und übergibt den Vektor der Spaltennamen als ein zusätzliches, unnötiges Argument. Die entsprechende letzte Zeile für das reproduzierbare Beispiel ist wie folgt:

lapply(dflist, `colnames<-`, newnames) 
+0

Oder eine andere Option ist 'lapply (dflist, setNames, newnames)' – akrun