2016-07-24 9 views
0

異なる列の合計を作成したいと考えています。そこに私は列の名前を作成し、合計をフェッチするforループがあります。ダミーデータでリストの値を貼り付けて列の合計値を取得する

は、このようなものです:

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

任意の考え:これはしかし、次のエラーがスローされます

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

for (i in 1:2){ 

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

    x <- sum(var) 
    print(x) 

} 

\:

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

df <- data.frame(row1, row2) 

が、私はこのような何かを作成したいです私が間違っているところ

+1

より標準的な方法は、サブセットを使用することです、と 'colSums'。あなたの例の 'df'と' list'をそれぞれ 'dat'と' lst'に変更しました。これは、 'lst <-c(" row1 "、" row2 "); colSums(dat [lst])'どちらもR関数名であるため) – user20650

答えて

0

たとえば、文字列'df$row1'を変数df$row1に目的の意味で変換する方法はわかりません。しかし、代わりに、dfの列に、そのデータフレームの名前を使用して、Rのリスト命名構文で直接アクセスすることができます。次の1つのライナーは、listベクトルに現れる各列名の合計を表示します。

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

出力:

[1] 6 
[1] 30 
row1 row2 
    6 30 
関連する問題