作者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://webptt.com/cn.aspx?n=bbs/R_Language/M.1412705217.A.DE9.html
1F:→ Wush978: 不应该用gsub,建议用paste0('B',x) 10/08 08:21
2F:→ Wush978: 不然就在pattern中加上^表示只抓开头的pattern 10/08 08:24
3F:→ koai: Wush大是指 test<-gsub(paste("^",t,sep=""),lab[i],test)? 10/08 08:55
4F:→ obarisk: 用paste就不用gsub了 10/08 09:03
5F:→ obarisk: 关於^,请使用regexp关键字 10/08 09:04
6F:→ obarisk: gsub("^", "B", t) 10/08 09:06
7F:→ obarisk: gsub("([0-9]*)", "B\\1", t) 10/08 09:07
8F:→ obarisk: ptt 应该有 regexp 版 10/08 09:08
9F:→ gsuper: 写得这麽胡说八道的程式我还是首次见到 10/10 00:28
10F:→ gsuper: 首先先把你的程式分解 一行一行检视你的输出 10/10 00:42
11F:→ gsuper: 这该不会是喝醉之下写的吧 0rz 10/10 00:42
12F:→ gsuper: 在你的回圈的最後一行加入 print(test) 10/10 00:43