我有一個由“::”分隔的 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 配對,因此解決方案將洗掉配對 B::A if A: :B 已經存在。我猜這可以使用 stringr 或正則運算式來解決。
uj5u.com熱心網友回復:
用于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"
uj5u.com熱心網友回復:
一種選擇:
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"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/410755.html
標籤:
