次の基準を使用して、大きなマトリックスから行を削除したいと思います。
2 列目に 100 を含む行はすべて削除する必要があります。
これはどのように行うことができますか?これらの行を選択する方法は知っていますが、ルールを使用してそれらを削除する方法がわかりません。
次の基準を使用して、大きなマトリックスから行を削除したいと思います。
2 列目に 100 を含む行はすべて削除する必要があります。
これはどのように行うことができますか?これらの行を選択する方法は知っていますが、ルールを使用してそれらを削除する方法がわかりません。
R > mat = matrix(c(1,2,3,100,200,300), 3,2)
R > mat
[,1] [,2]
[1,] 1 100
[2,] 2 200
[3,] 3 300
R > (index = mat[,2] == 100)
[1] TRUE FALSE FALSE
R > mat[index, ]
[1] 1 100
R > mat[!index, ]
[,1] [,2]
[1,] 2 200
[2,] 3 300
以前は、インデックスと別の方法で混乱していましたwhich
が、次の方法で解決できますwhich
。
R > (index2 = which(mat[,2] == 100))
[1] 1
R > mat[-index2, ]
[,1] [,2]
[1,] 2 200
[2,] 3 300
!
これらのインデックス (および)のさまざまな用途に注意して-
ください。
これは、マトリックスを使用してMatlabで行う方法ですA
。
オプション1
for (i=size(A,1):-1:0)
if (A(i,2)==100)
A(i,:)=[];
end
end
これは行を (一番下から) ループし、2 番目の要素が 100 の行を空のセットに設定し、効果的に削除します。
これを r に変換できるかもしれませんし、この問題を抱えている他の誰かを助けるかもしれません。
オプション 2
logicalIndex=(A(:,2)==100);
A(logicalIndex,:)=[];
これは、最初に 2 列目に 100 がある行を見つけてから、それらをすべて削除します。