R 用gsub提取字符串部分

R 用gsub提取字符串部分,r,string,gsub,extraction,R,String,Gsub,Extraction,我对R很陌生,现在正在使用由我和我的主管完成的脚本。 不幸的是,我无法将gsub()的一个实例重新用于示例的名称。 以前的版本是这样的(在整个df中前后各不相同): 并被拆开使用 cell.counts$EH_ID <- gsub("\\d+: (Anterior|Posterior) LN_(\\d{2})_\\d{3}.fcs", "LM02\\2", cell.counts$Sample) cell.counts$Position <- gsub("\\d+: (Anterio

我对R很陌生,现在正在使用由我和我的主管完成的脚本。 不幸的是,我无法将gsub()的一个实例重新用于示例的名称。 以前的版本是这样的(在整个df中前后各不相同):

并被拆开使用

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)
在整个df中,mLN和SPLEN各不相同,我尝试调整的代码不再起作用:

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)

cells$Mouse\u ID您希望鼠标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"
str gsub(str,pattern=“\\d+:(mLN | splene)(\\d{3})\\d{3}\\\\.fcs”,replacement=“AA_0\\2”) #[1]“AA_0_681” #>gsub(str,pattern=“\\d+:(mLN | splene)\\\\.fcs”,replacement=“\\1”) #[1]“百万富翁”
gsub使用正则表达式。这个站点()是一个很好的参考。这个()有一个很好的交互测试工具。谢谢!这起了作用,看起来几乎是应该的。但是如何去掉“0”之后的“uu”?我应该指定结果应该是“AA_XXXX”,将下划线移出捕获组
”\\d+:(mLN | splene)({ud{3})\\\\.fcs“
->
”\\d+:(mLN | splene)\\\d(\\d{3}\\\\\.fcs”
定义正则表达式捕获的内容,并在这种情况下可在编号的输出中访问
“\\2”
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)
# > 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"