[問題] gsub取代數字的小問題

作者: tokyo291 (工口工口)   2014-10-08 02:06:55
[問題類型]:
用gusb變換數字為character的時候,沒辦法成功
[軟體熟悉度]:
使用者(已經有用R 做過不少作品)
[問題敘述]:
用gusb變換數為character的時候,當數字為10位數或以上會碰到問題
例如 現在有 1 2 3 14 15 ,想變成 B1 B2 B3 B14 B15
卻都會變成 B1 B2 B3 B1B4 B1B5
[程式範例]:
> test<-sample(16,16,replace=T)
> lab<-paste("B", 1:16, sep = "")
> for ( i in 1:16){
+ t<-as.character(i)
+ test<-gsub(t,lab[i],test)
+ }
> test
[1] "B5" "B9" "B6" "B5" "B3" "B2" "B1B6" "B5" "B1B4" "B1B4"
"B4" "B4" "B1B6" "B3" "B2"
[16] "B1B3"
>
我知道用paste也可以做出想要的結果,只是想知道以上該如何修改才能有同結果
[關鍵字]:
gsub / 10位數
作者: Wush978 (拒看低質媒體)   2014-10-08 08:21:00
不應該用gsub,建議用paste0('B',x)不然就在pattern中加上^表示只抓開頭的pattern
作者: koai (可笑的自以為...)   2014-10-08 08:55:00
Wush大是指 test<-gsub(paste("^",t,sep=""),lab[i],test)?
作者: obarisk (OSWALT)   2014-10-08 09:03:00
用paste就不用gsub了關於^,請使用regexp關鍵字gsub("^", "B", t)gsub("([0-9]*)", "B\\1", t)ptt 應該有 regexp 版
作者: gsuper (Logit(odds))   2014-10-10 00:28:00
寫得這麼胡說八道的程式我還是首次見到首先先把你的程式分解 一行一行檢視你的輸出這該不會是喝醉之下寫的吧  0rz在你的迴圈的最後一行加入 print(test)

Links booklink

Contact Us: admin [ a t ] ucptt.com