[问题] 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