関数 'count' で、'演算子' = 1 (<)、=2 (=)、= 3 (>) によって 'critvalue' を満たす 'data' のエントリ数をカウントしたいと思います。
count = function(data,critvalue,operator=2) {
if (operator == 1){
sum(data < critvalue)}
if (operator == 2){
sum(data == critvalue)}
if (operator == 3){
sum(data > critvalue)}}
値のベクトルで機能します。
count(rep(6,10),critvalue=5,operator=1)
この関数を行列に適用して行ごとにカウントすると、機能しません。
m = rbind(1:10,1:10,1:10)
apply(m, 1, count, critvalue = 6)
しかし、関数 'count' を演算子引数を取らないように定義すると、何とか機能します
count = function(data,critvalue,operator=2) {
sum(data == critvalue)}
apply(m, 1, count, critvalue = 6)
これが適用機能で機能しない理由を理解する上での助けをいただければ幸いです。
また、すでにこのようにカウントされている基本関数にも絶対に興味があります。「合計」を試しましたが、適用での使用方法がわかりません。
sum(m == 6) #works
apply(m,1,sum, #no idea how set the criteria for being equal to 6