我有2個數據集。從R中較大的列表中減去名稱列表
A = 3085行,1列。 B = 527行,1000列。
這兩個數據集中的所有值都是shapefile的名稱。
我想創建A - B [,1]的新列表。 A.k.a我想從A中刪除出現在B的第一列中的任何值。
我最終將循環顯示所有1000列。
如果任何人都可以提供幫助,將不勝感激。
問候,
我有2個數據集。從R中較大的列表中減去名稱列表
A = 3085行,1列。 B = 527行,1000列。
這兩個數據集中的所有值都是shapefile的名稱。
我想創建A - B [,1]的新列表。 A.k.a我想從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])
+1 - 好多了! – Simbamangu
謝謝你的回覆。這很好。我用循環函數替換了第二個到最後一個,它完成了這項工作。 – JPD
@JPD - 不要忘了標記DrDom的回答[如同接受](http://meta.stackexchange.com/a/5235),如果它是你正在尋找的! – Simbamangu
要簡單(但未經測試):
x <- A[, 1]
keep <- seq_along(x)
for(i in seq_along(B))
keep <- setdiff(keep, which(x[keep] %in% B[, i]))
A[keep, ]
相反,有沒有什麼方法來創建只是在兩個列表中重複的值的列表? – JPD
我只是通過刪除!來解決這個問題。 – JPD