2016-07-24 3 views
0

Ich möchte eine Summe von verschiedenen Spalten erstellen. Dort habe ich eine for-Schleife, die einen Namen einer Spalte erstellt und die Summe abruft.Einfügen von Werten einer Liste, um Summenwerte von Spalten zu erhalten

mit Dummy-Daten ist wie folgt:

row1 <- c(1,2,3) 
row2 <- c(23,3,4) 

df <- data.frame(row1, row2) 

ich so etwas schaffen wollen: \

list <- c("row1", "row2") 

for (i in 1:2){ 

    name <- list[i] 
    var <- paste0("df$", name) 

    x <- sum(var) 
    print(x) 

} 

Dies jedoch führt den folgenden Fehler:

Error in sum(x) : invalid 'type' (character) of argument 

Irgendwelche Gedanken wo ich falsch gehe

+1

Je mehr Standardweg subsetting zu verwenden ist, und 'colSums'. dh 'lst <-c (" row1 "," row2 "); colSums (dat [lst])' (ps. Ich habe "df" und "list" von Ihrem Beispiel in "dat" bzw. "lst" geändert. da sie beide R-Funktionsnamen sind) – user20650

Antwort

0

Ich weiß keine Möglichkeit, zum Beispiel die Zeichenfolge 'df$row1' in eine Variable df$row1 mit der gewünschten Bedeutung zu konvertieren. Stattdessen können Sie einfach direkt auf die Spalten df zugreifen, indem Sie die Namen aus diesem Datenrahmen mit der Listenbenennungssyntax von R verwenden. Der folgende Liner wird die Summen jedes Spaltennamens ausgeben, der im Vektor list erscheint.

sapply(list, function(x) print(sum(df[[x]]))) 

Ausgang:

[1] 6 
[1] 30 
row1 row2 
    6 30 
Verwandte Themen