2015-10-20 15 views
-1

添加數字我有以下表(DAT2),它是一個變換表:爲什麼在使用變換表

> dat2 <- read.table(file.choose(), head=T, as.is=T)  #### Transformation table 
> head (dat2) 
            items newitem 
1 EE945098C667EAE169914A85B2694508 SELECT  OV1 
2 23552A46AA353DD331B6B6DD7A83DA8C SELECT  OV2 
3 63B31CA67BB356B0965E19E7F66B3F11 SELECT  OV3 
4 38A43F4165420E2F12EE500DC7E0E67C SELECT  OV4 
5 ECEAFE485E65C9851907DEED13D4E9E7 SELECT  OV5 
6 85190C0EFB3B7450568D84B3B3E3DB91 SELECT  OV6 

我有輸入表(DAT1):

> head (dat1) 
    sequence support 
1 <{OV1}> 0.14519496 
2 <{OV195}> 0.09071318 
3 <{OV196}> 0.09125194 
4 <{OV197}> 0.09785171 
5 <{OV198}> 0.09812109 
6 <{OV304}> 0.09886188 

我使用之後進行表格之間的轉換。我的意思是每個OV將其等效的字符串替換:

> for (i in 1:nrow(dat2)) { 
+ dat1$sequence <- gsub(dat2$newitem[i], dat2$items[i], dat1$sequence) 
+ } 

我得到每個dat1sequence額外的數量可以從第二行SELECT95,SELECT96等可以看出,而只應選擇。爲什麼我得到它?我怎樣才能避免得到它?

> head (dat1) 
             sequence support 
1 <{EE945098C667EAE169914A85B2694508 SELECT}> 0.14519496 
2 <{EE945098C667EAE169914A85B2694508 SELECT95}> 0.09071318 
3 <{EE945098C667EAE169914A85B2694508 SELECT96}> 0.09125194 
4 <{EE945098C667EAE169914A85B2694508 SELECT97}> 0.09785171 
5 <{EE945098C667EAE169914A85B2694508 SELECT98}> 0.09812109 
6 <{63B31CA67BB356B0965E19E7F66B3F11 SELECT04}> 0.09886188 

回答

1

"\\d*"添加到您的模式。它將捕獲額外的數字並將其消除以替換。

sub(paste0(newitem, "\\d*"), items, sequence) 
#[1] "<{EE945098C667EAE169914A85B2694508 SELECT}>" 

數據

items <- "EE945098C667EAE169914A85B2694508 SELECT" 
newitem <- "OV1" 
sequence <- "<{OV195}>" 
+0

感謝皮埃爾。你能告訴我在哪裏改變它嗎?這是循環中所需的更改: (i in 1:nrow(dat2)){ dat3 $ sequence < - sub(paste0(dat2 $ newitem [i],「\\ d *」),dat2 $ (我在1:nrow(dat2)){dat3 $序列<-sub(paste0(物品[我],dat3 $序列) } – Avi

+0

是的,應該工作 –

+0

嗨皮埃爾,我得到錯誤的結果使用以下循環: DAT2 $的newitem [I]中, 「\\ d *」),DAT2 $項[I],DAT3 $序列)} 結果爲: 「1」 「<{OV144}>」 0.0754101809002945 「2」 「<{OV145}>」 0.0708876735380732 「3 「」<{OV146}>「0.073832562053008 is:」1「」<{FBBF27370FD0553FAC64E36E95A61E50 EXECUTE PROCEDURE}>「0.227701005025126 」2「」<{FBBF27370FD0553FAC64E36E95A 61E50 EXECUTE PROCEDURE}>「0.286903266331658 」3「」<{FBBF27370FD0553FAC64E36E95A61E50 EXECUTE PROCEDURE}>「0.121309673366834 爲什麼? – Avi

相關問題