3

2 つのデータセットがあります。

A = 3085 行、1 列。B = 527 行、1000 列。

これらの両方のデータセットのすべての値は、シェープファイルの名前です。

A - B[,1] の新しいリストを作成したいと思います。別名、B の最初の列に表示される値を A から削除したいと思います。

最終的には、1000 列すべてに対してこれをループします。

誰かが助けることができれば、それは大歓迎です。

よろしく、

4

2 に答える 2

4

もしそうなら、Aまたはあなたはそのような手順を使うことができますBdata.framesmatrices

A[!(A[,1] %in% B[,1]), 1]

私はちょうど今あなたの質問を完全に理解しました。すべての列をループするには、ファミリ関数Bを使用できます。applyこの呼び出しは、の各列をパラメーターとして繰り返し、Bx列の数に等しい長さのリストを返します。リストのB各要素は、のA対応する列の不一致要素のベクトルになりますB

apply(B, 2, function(x) A[!(A[,1] %in% x), 1])
于 2012-05-08T11:20:11.133 に答える
2

簡単なもの(ただしテストされていない):

x <- A[, 1]
keep <- seq_along(x)
for(i in seq_along(B))
    keep <- setdiff(keep, which(x[keep] %in% B[, i]))
A[keep, ]
于 2012-05-08T11:53:09.933 に答える