2

我写这个是为了找到“1:”到“9:”的任何实例,并将其替换为“01:”到“09:”,同时保持“10:”或更大的完整。这是一个示例脚本:

region = c("18:1-100","16:1-100","X:1-100","2:1-100","4:1-100")

to.replace=grep("^[[:digit:]]:", region)
replacement=grep("^[[:digit:]]:", region, value=T)
replacement=paste(0,replacement,sep="")

for (i in length(to.replace)){
  region[to.replace[i]]=replacement[i]
}

它仅适用于“区域”中的最后一次出现,因此我认为我的 for 循环有问题,我只是不知道是什么。

4

2 回答 2

4

只需将您的 for 循环替换为:

region[to.replace] <- replacement
于 2013-03-15T11:52:12.133 回答
0

你可以通过它运行lapply...

region = c("18:1-100","16:1-100","X:1-100","2:1-100","4:1-100")
lapply( region , function(x){ r <- grepl("^[[:digit:]]:", x) ; ifelse( r , paste0( 0 , grep("^[[:digit:]]:", x , value=T) ) , x ) } )
于 2013-03-15T11:56:46.967 回答