2016-03-30 16 views
-1

Ich habe eine Liste (list1) mit n Elementen. Jedes Element von list1 ist ein Datenrahmen (df1, df2, ..., dfn) mit unterschiedlicher (auch vielleicht gleicher) Anzahl von Spalten.Einfügen einer Spalte aus Spaltennamen eines data.frame

Lassen Sie i'th Element (Datenrahmen) dfi mit Spaltennamen x1,x2,x3,....,xi.

möchte ich eine solche Formel mit Spaltennamen einzufügen:

x1+x2+x3+......+xi. 

Und diese Formel zuweisen als i-te Element einer Liste (list2).

Ich möchte dies für jeden Datenrahmen in list1.

Wie kann ich dies mit R? Ich werde mich sehr für jede Hilfe freuen. Danke vielmals.

Ex: Lassen Sie list1 zwei Elemente (zwei Datenrahmen: DF1 und DF2)

list1[[1]]: 

df1: 

x1 x2 x3 
-- -- -- 
43 12 7 
3 6 5 

und

list1[[2]]: 

df2: 

x1 x2 
-- -- 
21 45 
14 16 

Ich möchte list2 zurückzukehren, das ist:

list2[[1]]: 

x1+x2+x3 

und

list2[[2]]: 

x1+x2 

Ich bin nicht mit Elementen von Datenrahmen interessiert (df1 und df2), nur mit den Spaltennamen.

+4

Bitte veranschaulichen Sie das Problem mit Beispieldaten und Code. – mtoto

Antwort

2

Von meinem Verständnis Ihrer Frage kann dies die Arbeit für Sie tun? list2 <- lapply(list1, function(x) { return(paste(names(x), collapse = "+")) })

+0

vielen Dank. Das war, was ich suchte. – oercim

0

Macht das, was Sie wollen: list2 <- lapply(list1, function(x){apply(x, 1, sum)})?

+0

Nein @Ivan Vanchev. Ich bin an der Summe der Spalten nicht interessiert. Ich bin nur an den Spaltennamen interessiert. Psidoms Vorschlag macht, was ich will. Danke vielmals. – oercim

0

Ich habe in letzter Zeit versucht, etwas ähnliches zu tun. Ich habe keine gnädige Lösung, aber die unten funktioniert nur, wenn Sie die gleiche Anzahl von Spalten in allen Datenrahmen haben.

length_list <- length(list1) 
cols_in_df <- ncol(list[[i]]) 
i = 1 
for(i in 1:length_list) 
{ 
    assign(model[i], lm(list[[i]][1]+ list[[i]][2]+ ....+list[[i]][cols_in_df]) 
} 
Verwandte Themen