看板 R_Language 關於我們 聯絡資訊
[問題類型]: 用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