-1

私はRでプログラミングしており、このように2つの行列があります

a:    x1     x2                 b:   x1
      5      3                       3
      5      10                      5
      7      3                       7 
      7      140                     8
      10     152                     10
      ...    ...                     ...

のすべての行を削除したいのですがb、ここでb$x1はいずれとも同じではありませんa$x1またはb$x1. x1行列の が anyまたはinbと同じ場合、行列にとどまるべきです。行列には他の列もありますが、この操作には関係ありません。x1x2ab

誰でも私を助けることができますか?

4

1 に答える 1

2

私はあなたが何を求めているのかを正しく理解しているかどうかわかりませんが、そのように試すことができます

> a
     x1  x2
[1,]  5   3
[2,]  5  10
[3,]  7   2
[4,]  7 140
[5,] 10 152

> b
     x1
[1,]  3
[2,]  5
[3,]  7
[4,]  8
[5,] 10

> as.matrix(b[which(b %in% a[,c(1,2)])])

         [,1]
    [1,]    3
    [2,]    5
    [3,]    7
    [4,]   10

また、「a」と「b」の両方が行列である必要があり、さらに、その関数の結果は行の少ない行列になることに注意してください。列が多い場合は、操作を簡単に拡張できます。

編集

わかりました、大きな問題はありませんが、あなたは行列またはおそらく、私が読み間違えた場所の両方を指定しました。データ フレームを使用して同じ操作で編集しましたが、必要な人のために行列を残しました。

> subset(b, b$x1 %in% c(a$x1,a$x2))
  x1
1  3
2  5
3  7
5 10

b[[index]]組み込みのデータ フレーム参照の名前を使用する代わりに、インデックスを作成することもできます。

于 2013-10-25T20:56:50.777 に答える