从R中较大的列表中减去名称列表

时间:2012-05-08 11:13:26

标签: r

我有2个数据集。

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

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

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

我最终将为所有1000列循环播放。

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

此致

2 个答案:

答案 0 :(得分:4)

如果ABdata.framesmatrices,您可以使用此类程序

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

我刚刚完全意识到你的问题。要循环B的所有列,您可以使用apply系列函数。此调用将迭代B的每一列作为x参数,并将返回长度等于B的列数的列表,列表的每个元素将是不匹配元素的向量AB的相应列。

apply(B, 2, function(x) A[!(A[,1] %in% x), 1])

答案 1 :(得分: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, ]