0

たとえば、10列、200行のデータ(マトリックスの形式)にフィルターを適用しようとしています。

分散係数がしきい値より大きい行のみを保持したい。しかし、私が持っているコードでは、しきい値を超える行の分散係数を出力しているようです。しきい値を超えるかどうかをテストするだけで、元のデータポイントをマトリックスに出力します。

covar <- function(x) ( sd(x)/mean(x) )
evar <- apply(myMatrix,1,covar)
myMatrix_filt_var <-myMatrix[evar>2,]

ここで設定したしきい値は 2 です。

私は何を間違っていますか?Rを勉強したばかりでごめんなさい。

ありがとう!

4

1 に答える 1

1

mがあなたの行列の場合、

m[apply(m, 1, function(x) sd(x)/mean(x) > 2), ]

フィルタリングされたマトリックスが得られるはずです。アイデアは、すべての行の変動係数を取得し、内部で > 2 であるかどうかを確認することです。これは論理ベクトルを返し、そこから のようm[logical_vector, ]に直接アクセスすることで、条件が TRUE である行を取得できます。

と のna.rm = TRUE計算中に NA 値を削除する場合に使用できます。sdmean

于 2013-03-29T19:51:20.467 に答える