问题:
现在,我有一列电话号码:
1255418952515527237602
15376581027
我想把每个电话号码的5~8位都用 * 来替代,如何做呢?
解答:
x <- as.character(c(12554189525,15527237602,15376581027))
substr(x,5,8) <- '****'
x
这个比较简洁,效率也很高。
x <- as.character(c(12554189525,15527237602,15376581027))
(y <- paste(substr(x,1,4),'****',substring(x,9),sep=''))
这个用了两次substr和一次paste,计算复杂性增加了不少,性能较差。
x <- as.character(c(12554189525,15527237602,15376581027))
for(i in 1:length(x)){
x[i] <- sub(substr(x[i],5,8),"****",x[i])
}
x
这个方法用了循环,循环里面用了sub和substr函数,效率较差,这个还是传统的编程思想,完全没有考虑R的向量编程风格。第一个解答就是向量编程风格。