我有 2 个数据集。
A = 3085 行,1 列。B = 527 行,1000 列。
这两个数据集中的所有值都是 shapefile 的名称。
我想创建一个 A - B[,1] 的新列表。Aka 我想从 A 中删除 B 的第一列中出现的任何值。
我最终将对所有 1000 列进行循环。
如果有人可以提供帮助,将不胜感激。
问候,
我有 2 个数据集。
A = 3085 行,1 列。B = 527 行,1000 列。
这两个数据集中的所有值都是 shapefile 的名称。
我想创建一个 A - B[,1] 的新列表。Aka 我想从 A 中删除 B 的第一列中出现的任何值。
我最终将对所有 1000 列进行循环。
如果有人可以提供帮助,将不胜感激。
问候,
如果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])
一些简单的(但未经测试):
x <- A[, 1]
keep <- seq_along(x)
for(i in seq_along(B))
keep <- setdiff(keep, which(x[keep] %in% B[, i]))
A[keep, ]