2016-10-20 2 views
1

Ich möchte die Summe der Werte für eine Variable in jedem Datenrahmen in einer Liste abrufen. Ich habe etwas Ähnliches zu diesem:Wie erhält man die Summe der Beobachtungen einer Variablen mit sapply/lapply für eine Liste von Datenrahmen?

l <- list(a = mtcars, b = mtcars, c = mtcars) 
v <- sapply(l, function(x)sum(l$x$disp)) 

Ich erwarte, einen benannten Vektor zu erhalten, der Summen enthält. Stattdessen bekomme ich nur Nullen. Meine Annahme wäre, dass nur der Name des Datenrahmens an die Funktion übergeben wird.

Ich habe andere Funktionen ausprobiert und plätschert, aber jedes Mal bekomme ich eine Liste/Vektor mit Nullen oder Nullen. Es ist möglich, für die Anweisung für diese Aufgabe zu verwenden, aber in meinem Fall habe ich eine Liste mit Listen von Datenrahmen und verschachtelten Schleifen in R scheinen keine gute Wahl zu sein. Hast du irgendwelche Ideen, was mir fehlt? Vielen Dank im Voraus.

+0

Sie anrufen ‚Liste‘ anstelle von 'l' in sapply. –

Antwort

2

Ich glaube, Sie brauchen,

sapply(l, function(x) sum(x["disp"])) 

# a  b  c 
#7383.1 7383.1 7383.1 

Oder wenn Sie die komplette Summe von disp Variable über alle in der Liste benötigen, können Sie es wickeln vollständig in sum

sum(sapply(l, function(x) sum(x["disp"]))) 

#[1] 22149.3 
Verwandte Themen