3

我有 2 个数据集。

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

这两个数据集中的所有值都是 shapefile 的名称。

我想创建一个 A - B[,1] 的新列表。Aka 我想从 A 中删除 B 的第一列中出现的任何值。

我最终将对所有 1000 列进行循环。

如果有人可以提供帮助,将不胜感激。

问候,

4

2 回答 2

4

如果ABdata.frames或者matrices你可以使用这样的程序

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

我刚刚完全意识到你的问题。要在所有列上循环,B您可以使用apply家庭功能。B此调用将迭代作为参数的每一列,x并将返回长度等于 的列数的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 回答