

二次元配列aに値がランダムで入っていて、この配列aから１０回以上登場している値を全て0にしたいのですが、どのように記述すればいいのでしょうか。ループは使わずに行いたいです。  
for文を使った書き方だと、

[code]

    for(time in unique(a)){
      if(length(a[a==time]) >= 10 ){
        a[a==time] <- 0
      }
    }
    
[/code]

という風に書けると思うのですが、ループを使わずに実現する方法が調べても分かりません。いま行っている作業が非常に大きな二次元配列を大量に扱っているため、なるべくループを用いないで実現できる方法を模索しています。  
Rの記述に詳しい方、よろしくお願いいたします。


CC BY-SA 3.0
2016-02-13T12:55:47.910
22047
2016-02-13T14:09:40.450
2016-02-13T13:28:42.320
14392
question
r
Rの二次元配列の特定成分を変更したいです


以下は `table` 関数を使う方法です。

[code]

    f <- as.data.frame(table(a))
    a[a %in% f[f$Freq>=10,]$a] <- 0
    
[/code]

`table` 関数を使う事で unique な要素の出現頻度を得ることができます。


CC BY-SA 3.0
2016-02-13T14:09:40.450
22051
2016-02-13T14:09:40.450
22047
answer