2016-09-12 11 views
0

サブセット化されたデータセットの特定の変数の値を数える関数を作成したいが、私の関数が想定どおりに機能していない。sum in関数が正しく機能しない

selected_cyl_6 <- subset(mtcars, mtcars$cyl==6) 
selected_cyl_4 <- subset(mtcars, mtcars$cyl==4) 

count <- function(group,variable) { 
    sum(group$variable == 4) 
} 

count(selected_cyl_6,gear) 
# [1] 0 

答えは4である必要があり、私は直接の合計を使用している場合しかし、私は私が間違って何をやって正解

sum(selected_cyl_6$gear==4) 
# [1] 4 

別の例

count(selected_cyl_4,gear) 
# [1] 0 
sum(selected_cyl_4$gear==4) 
# [1] 8 

を取得しますか?

答えて

2

あなたの関数でドル記号のショートカットを使用しています。 fortunes::fortune(343)を参照してください。

一部のオプションは、表記法を使用しています。

最初に、標準評価では、関数を使用するときに変数名を引用符で囲みます。あなたが引用符を必要としないので、非標準evalutionを使用する場合は

count <- function(group, variable) { 
    sum(group[[variable]] == 4) 
} 

count(selected_cyl_6, "gear") 

、あなたはあなたの関数でsubstitutedeparseを使用することができます。

count <- function(group, variable) { 
    sum(group[[deparse(substitute(variable))]] == 4) 
} 

count(selected_cyl_6, gear) 
関連する問題