2017-08-01 35 views
2

組合我有一個載體,包含重複的人名。 (不按正確的順序,名字和姓氏有時互換)互換名和姓氏,然後按

name <- c('jimmy fallows','fallows jimmy','brad pitt','clark michael','michael clark') 

我需要從矢量中獲得唯一名稱。

所需的輸出:

c('jimmy fallows','brad pitt','michael clark') 

unique(name)不解決這個問題。我曾嘗試使用strsplit,但是這交換了矢量中的所有名稱。我必須選擇正確的交換。

testfunct <- function(x){ 
    splt <- strsplit(x, ' ') 
    swap <- paste(splt[[1]][2],splt[[1]][1]) 
    swap 
} 
unique(lapply(name,testfunct)) 

回答

2

我們可以在splitlist元素做sort,然後用duplicated得到了logical矢量提取「名」

name[!duplicated(lapply(strsplit(name, "\\s+"), sort))] 
+0

它的工作原理的unique元素。謝謝 :) – Diablo