2013-05-22 22 views
15

2つの連続変数(人口と所得)と2つの因子変数(地域と地域)を持つ組み込み行列state.x77からstateという名前のデータセットを作成しました。 。unique.default(x)unique()のRエラーはベクトルにのみ適用されます

私は、返されたオブジェクトのフォーマットを参照してくださいtapply()by()aggregate()、およびave()を使用して地域によって収入を意味する計算。

しかしave()の呼び出しがエラーに

unique.defaultで

エラー(x)を与えている:ユニーク()はベクトル

にのみ適用されたコードは次のとおりです。

## Mean income by region 
tapply(state$inc, state$region, mean) 
# Northeast   South North Central   West 
# 4570.222  4011.938  4611.083  4702.615 

by(state$inc, state$region, mean) 
# state$region: Northeast 
# 
# [1] 4570.222 
# [...] 

aggregate(state$inc, list(state$region), mean) 
# 
#   Group.1  x 
# 1  Northeast 4570.222 
# 2   South 4011.938 
# 3 North Central 4611.083 
# 4   West 4702.615 

ave(state$inc, state$region, mean) 
# Error in unique.default(x) : unique() applies only to vectors 

エラーはなぜ発生しますか?どうすればそれを防ぐことができますか?

答えて

16

これは非常に一般的な間違いである、あなたが名前付き引数FUN使用する必要があります(。ave...引数の一部)そうmeanは別のグループ化変数として解釈されます

ave(state$inc, state$region, FUN = mean) 

+0

感謝あなたは大変です。エラーは防止されています。しかし、私もtapply()、by()、aggregate()コマンドでFUNを使用しませんでした。なぜそれらはエラーを起こさなかったのですか? – time

+2

これは、 'ave'の概要(引数リスト)の中で' FUN'が** ** '...'の後に来るので、 'FUN ='でそれを特別に渡さないとRはそれと思うでしょう'...'引数の一部であり、 'FUN'のデフォルト(' mean')を使います。 – flodel

+0

ありがとう、ありがとう、ありがとう。私はrの初心者です。あなたは私の知識を向上させるために助けてくれますか? – time

関連する問題