2017-01-25 5 views
0

dfにはnの変数があります。 変数のサブセットをループして周波数テーブルを作成したいとします。例えばデータフレーム内の変数を集計するためのループ

、以下dfを与えられた:

id a b c d 
1 0 1 0 1 
2 1 0 1 0 
3 0 1 0 1 

私は成功せず、次の操作を実行しようとした:

varlist <- c("a", "c") 

for (i in varlist){ 
    print(table(df$i)) 
       } 
+2

'lapply(dat [varliat]、table)' – user20650

+0

'table(df [varlist])'についてはどうですか? @UweBlock; – Uwe

+0

;それは二次元以上の不連続表を与えるでしょう。単変量テーブルが必要なように見える – user20650

答えて

2

(まず、あなたの行列dfは、データフレームに変換される:)

df <- setNames(as.data.frame(df), letters[1:4]) 

$はありません変数で作業する。あなたは代わりに[[を使用する必要があります。

for (i in varlist){ 
    print(table(df[[i]])) 
} 

はしかし、あなたの問題のためにはるかに簡単に解決策はlapplyです:

lapply(df[varlist], table) 

Extractのヘルプページから:

主な違いは、$は計算されたインデックスを許可しない一方、[[です。

+0

ありがとうございます! – kquach

+0

Svenは、付録として、変数で$が機能しない理由を説明できますか?代わりに[[]]が使用されていますか?ありがとう! – kquach

+0

@kquach私は答えに引用を付けました。 –

関連する問題