r-查找前半部分与下半部分匹配的字符串



我有一个IP地址对列表,用":"分隔:&";。

ip_pairs <- c("104.124.199.136::192.168.1.67", "104.124.199.136::192.168.137.174", "192.168.1.67::104.124.199.136", "192.168.137.174::104.124.199.136")

正如你所看到的,向量的第三个和第四个元素与前两个元素相同,但相反(我的实际问题是找到IP的所有唯一配对,所以如果A::B已经存在,解决方案会删除对B::A。我猜这可以使用stringr或regex来解决。

一个选项:

library(stringr)
split_function = function(x) {
x = sort(x)
paste(x, collapse="::")
}
pairs = str_split(ip_pairs, "::")
unique(sapply(pairs, split_function))
[1] "104.124.199.136::192.168.1.67"    "104.124.199.136::192.168.137.174"

使用read.table从对中创建一个两列数据帧,对每一行进行排序,并使用duplicated查找重复数据。然后提取出不重复的。未使用任何程序包。

DF <- read.table(text = ip_pairs, sep = ":")[-2]
ip_pairs[! duplicated(t(apply(DF, 1, sort)))]
## [1] "192.168.1.67::104.124.199.136" "192.168.137.174::104.124.199.136"

最新更新