Hatena::ブログ(Diary)

驚異のアニヲタ社会復帰への道

Prima Project

2010-11-19

TRUEとFALSEをカウント

例えば

a<- c(0,4,5,3,20,0,0,2,8)

というベクトルがあったとして、この要素に0と等しいものがいくつあるか調べたい。

a == 0
[1]  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE

となるが、これを

[1]  TRUE FALSE
        3     6

的に返してくれる関数はないでしょうか。

なければ作るわなぁ…

TF<- function(vec,n){                    # vecは判定したいベクトル、nは真偽判定の数値
  TFresult<- vec == n
  TFcount<- c(0,0)                       # TRUE、FALSEの順
  for(i in 1:length(vec)){
    if(TFresult[i] == TRUE){
      TFcount[1]<- TFcount[1] + 1
    }else{
       TFcount[2]<- TFcount[2] + 1
       }
  }
  return(TFcount)
}

 

にしなさんからTRUEの性質を教えていただきました。ありがとうございます。

a<- c(0,4,5,3,20,0,0,2,8)
sum(a==0)

 

NKから別の方法を教えてもらった。

length(a[a==0])

にしなにしな 2010/11/19 19:06 通りすがりのものです。
いつも勉強させて頂いております。

TRUEは1と等価ですので
> a<- c(0,4,5,3,20,0,0,2,8)
> sum(a==0)
[1] 3

とsumを使ってカウントすることができます。
参考までに

oichoich 2017/09/19 11:55 table(a==0)
が当初求めるものに一番近い気が。。。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/MikuHatsune/20101119/1290154417