在基因組學研究中,您經常會有許多帶有重複基因名稱的字符串。我想找到一種有效的方法,只保留一個字符串中的唯一基因名稱。這是一個有效的例子。但是,是不是可以一步完成這個工作,即不必拆分整個字符串,然後必須將這些獨特的元素一起過去?只保留字符串中的唯一元素r
genes <- c("GSTP1;GSTP1;APC")
a <- unlist(strsplit(genes, ";"))
paste(unique(a), collapse=";")
[1] "GSTP1;APC"
在基因組學研究中,您經常會有許多帶有重複基因名稱的字符串。我想找到一種有效的方法,只保留一個字符串中的唯一基因名稱。這是一個有效的例子。但是,是不是可以一步完成這個工作,即不必拆分整個字符串,然後必須將這些獨特的元素一起過去?只保留字符串中的唯一元素r
genes <- c("GSTP1;GSTP1;APC")
a <- unlist(strsplit(genes, ";"))
paste(unique(a), collapse=";")
[1] "GSTP1;APC"
基於這一例子表明,也許
gsub("(\\w+);\\1", "\\1", genes)
#[1] "GSTP1;APC"
謝謝。它對這個例子有效,但是如果你有一個稍微不同的字符串,它將不起作用:c(「A」,「B」,「A」) – milan
這只是結合成一行:粘貼(唯一(unlist(strsplit(基因),「 「)),collapse =」;「))'。 – lmo
我已經看到了這一堆棧:http://stackoverflow.com/questions/20283624/removing-duplicate-words-in-a-string-in-r –
如果你會發現更好的東西,我會很驚訝。除了可以在'strsplit'中增加'fixed = TRUE'來提高效率,還有'stringi :: stri_unique',聲稱更適合NLP而不是'base :: unique'(但速度要慢得多)。 –