作者tokyo291 (工口工口)
看板R_Language
標題[問題] gsub取代數字的小問題
時間Wed Oct 8 02:06:55 2014
[問題類型]:
用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位數
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.27.23.44
※ 文章網址: http://www.ptt.cc/bbs/R_Language/M.1412705217.A.DE9.html
→ Wush978: 不應該用gsub,建議用paste0('B',x) 10/08 08:21
→ Wush978: 不然就在pattern中加上^表示只抓開頭的pattern 10/08 08:24
→ koai: Wush大是指 test<-gsub(paste("^",t,sep=""),lab[i],test)? 10/08 08:55
→ obarisk: 用paste就不用gsub了 10/08 09:03
→ obarisk: 關於^,請使用regexp關鍵字 10/08 09:04
→ obarisk: gsub("^", "B", t) 10/08 09:06
→ obarisk: gsub("([0-9]*)", "B\\1", t) 10/08 09:07
→ obarisk: ptt 應該有 regexp 版 10/08 09:08
→ gsuper: 寫得這麼胡說八道的程式我還是首次見到 10/10 00:28
→ gsuper: 首先先把你的程式分解 一行一行檢視你的輸出 10/10 00:42
→ gsuper: 這該不會是喝醉之下寫的吧 0rz 10/10 00:42
→ gsuper: 在你的迴圈的最後一行加入 print(test) 10/10 00:43