【发布时间】:2014-06-12 22:28:19
【问题描述】:
我希望您能了解一下这个例子。我需要拥有两个向量的所有组合,如果它们相同则删除,如果重复则删除一份。
v1 <- c("AS", "KS", "AZ", "AL", "MO")
v2 <- c("AZ", "KZ", "LM", "AZ", "ZK")
我想得到 v1 / v2 的组合,我不想要倒数的 V2 / V1,所以我使用
z<-outer(v1,v2, paste, sep="/")
这给了我
[,1] [,2] [,3] [,4] [,5]
[1,] "AS/AZ" "AS/KZ" "AS/LM" "AS/AZ" "AS/ZK"
[2,] "KS/AZ" "KS/KZ" "KS/LM" "KS/AZ" "KS/ZK"
[3,] "AZ/AZ" "AZ/KZ" "AZ/LM" "AZ/AZ" "AZ/ZK"
[4,] "AL/AZ" "AL/KZ" "AL/LM" "AL/AZ" "AL/ZK"
[5,] "MO/AZ" "MO/KZ" "MO/LM" "MO/AZ" "MO/ZK"
但我需要修改以适应我的分析
第 1 步。删除相同的组合。我不需要具有相同的组合。在上面的例子中,有两次 AZ/AZ 并且都应该被删除。
第 2 步。删除重复的组合。我不需要重复。在上面的示例中,AL/AZ、AS/AZ、KS/AZ、MO/AZ 是重复的。应删除一份。
第 3 步。如果有倒数组合,请删除它。例如 AZ/AS 与 AS/AZ 相同。
第 3 步。对所有内容进行排序并将它们保存在单列中。
"AL/AZ"
"AL/KZ"
"AL/LM"
"AL/ZK"
"AS/AZ"
"AS/KZ"
"AS/LM"
"AS/ZK"
"AZ/KZ"
"AZ/LM"
"AZ/ZK"
"KS/AZ"
"KS/KZ"
"KS/LM"
"KS/ZK"
"MO/AZ"
"MO/KZ"
"MO/LM"
"MO/ZK"
谢谢
【问题讨论】:
-
试试
matrix(sort(unique(as.vector(z))), ncol=1),或者只是sort(unique(as.vector(z))),这取决于你真正需要什么。 -
这两个值的顺序对最终结果有影响吗?
-
你不觉得很遗憾你没有构建一个包含任何 AS/AZ、AZ/AS 组合的测试用例吗?您能否解释一下为什么在您的示例中“AL/AZ、AS/AZ、KS/AZ、MO/AZ 重复”?
-
Flick 先生:排序后的最终结果有帮助!
-
BondedDust:是的,在示例中我没有包含测试用例。对不起。 AL/AZ、AS/AZ、KS/AZ、MO/AZ 重复,因为在 V1 和 v2 中都存在“AZ”
标签: r vector combinations duplication