2012-05-16 136 views
32

我與NCBI參考序列登錄號工作就像變a刪除「。」後的部分字符串。

a <- c("NM_020506.1","NM_020519.1","NM_001030297.2","NM_010281.2","NM_011419.3", "NM_053155.2") 

要從biomart包我需要的登錄號後刪除.1.2等獲取信息。我通常這樣做這個代碼:

b <- sub("..*", "", a) 

# [1] "" "" "" "" "" "" 

但正如你所看到的,這是不是這個變量的正確方法。誰能幫我這個?

回答

44

你只需要逃避期:

a <- c("NM_020506.1","NM_020519.1","NM_001030297.2","NM_010281.2","NM_011419.3", "NM_053155.2") 

gsub("\\..*","",a) 
[1] "NM_020506" "NM_020519" "NM_001030297" "NM_010281" "NM_011419" "NM_053155" 
+0

澄清:基礎包(即沒有其他軟件包,比如'string r'),選項如下: b1 < - gsub(「\\ .. *」,「」,a,fixed = FALSE) b2 < - sub(「\\ .. *「,」「,a,fixed = FALSE) 在某些情況下,您可能需要更改'fixed'參數。但是,在這裏你必須把它設置爲'FALSE'(這是默認值);否則它將無法工作。此外,你需要雙重轉義'\\',否則你會得到一個錯誤。 –

+0

因爲我們在這裏使用正則表達式,所以您不會將它與fixed一起使用。 – Hansi

3

你可以這樣做:

sub("*\\.[0-9]", "", a) 

library(stringr) 
str_sub(a, start=1, end=-3) 
+0

替代選擇:'str_replace(a,「\\。[0-9]」,「」)'和'str_replace(a,「\\ .. *」,「」)' – Paolo

3

我們可以假裝他們是文件名,並刪除擴展

tools::file_path_sans_ext(a) 
# [1] "NM_020506" "NM_020519" "NM_001030297" "NM_010281" "NM_011419" "NM_053155"