簡體   English   中英

使用 gsub 提取部分字符串

[英]Extracting parts of character string with gsub

我對 R 很陌生,現在正在使用由我和我的主管完成的腳本。 不幸的是,我無法將 gsub() 的一個實例用於我的樣本名稱。 以前的版本看起來像這樣(前部和后部在整個 df 中有所不同):

"1: Anterior LN_60_026.fcs"   

並被拆開使用

cell.counts$EH_ID <- gsub("\\d+: (Anterior|Posterior) LN_(\\d{2})_\\d{3}.fcs", "LM02\\2", cell.counts$Sample)
cell.counts$Position <- gsub("\\d+: (Anterior|Posterior) LN_(\\d{2})_\\d{3}.fcs", "\\1", cell.counts$Sample)

現在我面臨一個類似的問題,需要一些小的調整。 因為我不知道 gsub() 語法是如何工作的,所以我堅持:

"1: mLN_681_030.fcs"     

對於哪個 mlN 和脾臟在整個 df 中有所不同,並且我嘗試適應的代碼不再起作用:

cells$Mouse_ID <- gsub("\\d+: (mLN|spleen)(_\\d{2})_\\d{3}_\\.fcs", "AA_0\\2", cells$Sample)
cells$tissue <- gsub("\\d+: (mLN|spleen)_(\\d{3})_\\d{3}.fcs", "\\1", cells$Sample)

我應該補充一點,“組織”分離有效,但樣本數提取無效。 如果有人能向我解釋我做錯了什么以及這段代碼中的字符具體做了什么,我將不勝感激。 PS:是的,我用過?gsub,但我發現 R 中的幫助文件對初學者很不友好,也不太了解。

您期望鼠標 ID 行中的第二個捕獲組中恰好有 2 位數字,並且您的文件名前有一個尾隨下划線。

同樣在第二個正則表達式中,您沒有逃脫. 這仍然有效,因為未轉義. 將匹配任何字符,但應該是\\. 如下。

# > str <- "1: mLN_681_030.fcs"
# > gsub(str, pattern="\\d+: (mLN|spleen)(_\\d{3})_\\d{3}\\.fcs", replacement = "AA_0\\2")
# [1] "AA_0_681"
# > gsub(str, pattern = "\\d+: (mLN|spleen)_(\\d{3})_\\d{3}\\.fcs", replacement = "\\1")
# [1] "mLN"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM