6

4x2マトリックスがあるとしましょう。

x<- matrix(seq(1:8), 4)

次の要素を含む

1 5
2 6
3 7
4 8

この特定の例では、「2」または「7」を含む行を削除したいとします (マトリックスを手動で調べて削除する必要はありません)。どうすればいいですか?

ここに私が思いついたものがありますが、それは私がやりたいことをしていません。2aまたは aを含む行列の行インデックスを返すようにします7

remove<- which(2 || 7 %in% x)
x<- x[-remove,]

誰でもこれを理解するのを手伝ってもらえますか?

4

3 に答える 3

8
x[-which(x == 2 | x == 7, arr.ind = TRUE)[,1],] 

私が考えることができる最も簡単で効率的な方法です。

単一の '|' 各要素が 2 か 7 かを調べます (これは '||' ではできません)。arr.ind は、デフォルトの単一の数値ではなく、座標のペアとして各位置を示します。[,1] は、2 または 7 を持つ各行を選択します。

それが役立つことを願っています:)

于 2012-11-10T20:37:12.000 に答える
3

@Dirkが言ったように、これwhichは正しい関数です。これが私の答えです。

index <- apply(x, 1, function(a) 2 %in% a || 7 %in% a)
> index
[1] FALSE  TRUE  TRUE FALSE
x[index, ]
于 2012-11-10T20:24:42.003 に答える