修改矢量中与模式不匹配的元素

时间:2014-06-24 16:14:05

标签: regex r vector

我有一个带有这些条目的向量:

[5484] "QUERY___05nirs_WM_WATMOP079"                                                            
[5485] "QUERY___05nirs_WM_WATMAP075"                                                            
[5486] "QUERY___05nirs_WM_WATMAP037"                                                            
[5487] "QUERY___05nirs_WM_WATMOP071"                                                            
[5488] "QUERY___03nirs_WM_WATMAP168"                                                            
[5489] "2022819637_Scalindua_MAnamSca741_C384"                                                  
[5490] "237637177_clone_PeruG11"                                                                
[5491] "237637158_clone_PeruD2"                                                                 
[5492] "237637172_clone_PeruD12"                                                                
[5493] "237637168_clone_PeruE11"                                                                

我想将"QUERY___"附加到那些尚未包含它的元素的开头。我想出了如何使用grepl获取逻辑向量,告诉我哪些元素没有"QUERY",但不知道如何使用该向量来更改原始向量。

2 个答案:

答案 0 :(得分:3)

尝试:

  gsub("(^[^QUERY].*)","QUERY___\\1",string)
 #[1] "QUERY___05nirs_WM_WATMOP079"                  
 #[2] "QUERY___05nirs_WM_WATMAP075"                  
 #[3] "QUERY___05nirs_WM_WATMAP037"                  
 #[4] "QUERY___05nirs_WM_WATMOP071"                  
 #[5] "QUERY___03nirs_WM_WATMAP168"                  
 #[6] "QUERY___2022819637_Scalindua_MAnamSca741_C384"
 #[7] "QUERY___237637177_clone_PeruG11"              
 #[8] "QUERY___237637158_clone_PeruD2"               
 #[9] "QUERY___237637172_clone_PeruD12"              
 #[10] "QUERY___237637168_clone_PeruE11"            

答案 1 :(得分:2)

这是一个简单的方法

string <- c("QUERY___05nirs_WM_WATMOP079",
            "QUERY___05nirs_WM_WATMAP075",
            "QUERY___05nirs_WM_WATMAP037",
            "QUERY___05nirs_WM_WATMOP071",
            "QUERY___03nirs_WM_WATMAP168",
            "2022819637_Scalindua_MAnamSca741_C384",
            "237637177_clone_PeruG11",
            "237637158_clone_PeruD2",
            "237637172_clone_PeruD12",
            "237637168_clone_PeruE11")

> ind <- grepl("^QUERY___", string)
> ( string2 <- c(string[ind], paste0("QUERY___", string[!ind])) )
 #[1] "QUERY___05nirs_WM_WATMOP079"                   "QUERY___05nirs_WM_WATMAP075"                  
 #[3] "QUERY___05nirs_WM_WATMAP037"                   "QUERY___05nirs_WM_WATMOP071"                  
 #[5] "QUERY___03nirs_WM_WATMAP168"                   "QUERY___2022819637_Scalindua_MAnamSca741_C384"
 #[7] "QUERY___237637177_clone_PeruG11"               "QUERY___237637158_clone_PeruD2"               
 #[9] "QUERY___237637172_clone_PeruD12"               "QUERY___237637168_clone_PeruE11"