我有2个数据集。
A = 3085行,1列。 B = 527行,1000列。
这两个数据集中的所有值都是shapefile的名称。
我想创建一个新的A - B [,1]列表。 A.k.a我想从A的第一列中删除A中的任何值。
我最终将为所有1000列循环播放。
如果有人可以提供帮助,我们将不胜感激。
此致
答案 0 :(得分:4)
如果A
和B
为data.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])
答案 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, ]