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

看板R_Language作者 (工口工口)時間10年前 (2014/10/08 02:06), 編輯推噓0(0012)
留言12則, 4人參與, 最新討論串1/1
[問題類型]: 用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

10/08 08:21, , 1F
不應該用gsub,建議用paste0('B',x)
10/08 08:21, 1F

10/08 08:24, , 2F
不然就在pattern中加上^表示只抓開頭的pattern
10/08 08:24, 2F

10/08 08:55, , 3F
Wush大是指 test<-gsub(paste("^",t,sep=""),lab[i],test)?
10/08 08:55, 3F

10/08 09:03, , 4F
用paste就不用gsub了
10/08 09:03, 4F

10/08 09:04, , 5F
關於^,請使用regexp關鍵字
10/08 09:04, 5F

10/08 09:06, , 6F
gsub("^", "B", t)
10/08 09:06, 6F

10/08 09:07, , 7F
gsub("([0-9]*)", "B\\1", t)
10/08 09:07, 7F

10/08 09:08, , 8F
ptt 應該有 regexp 版
10/08 09:08, 8F

10/10 00:28, , 9F
寫得這麼胡說八道的程式我還是首次見到
10/10 00:28, 9F

10/10 00:42, , 10F
首先先把你的程式分解 一行一行檢視你的輸出
10/10 00:42, 10F

10/10 00:42, , 11F
這該不會是喝醉之下寫的吧  0rz
10/10 00:42, 11F

10/10 00:43, , 12F
在你的迴圈的最後一行加入 print(test)
10/10 00:43, 12F
文章代碼(AID): #1KD2l1tf (R_Language)
文章代碼(AID): #1KD2l1tf (R_Language)