質問: 二次元配列aに値がランダムで入っていて、この配列aから10回以上登場している値を全て0にしたいのですが、どのように記述すればいいのでしょうか。ループは使わずに行いたいです。 for文を使った書き方だと、 ``` for(time in unique(a)){ if(length(a[a==time]) >= 10 ){ a[a==time] <- 0 } } ``` という風に書けると思うのですが、ループを使わずに実現する方法が調べても分かりません。いま行っている作業が非常に大きな二次元配列を大量に扱っているため、なるべくループを用いないで実現できる方法を模索しています。 Rの記述に詳しい方、よろしくお願いいたします。
回答: 以下は `table` 関数を使う方法です。 ``` f <- as.data.frame(table(a)) a[a %in% f[f$Freq>=10,]$a] <- 0 ``` `table` 関数を使う事で unique な要素の出現頻度を得ることができます。