加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

R:删除字符串开头和结尾的数字

发布时间:2020-12-15 05:12:16 所属栏目:Java 来源:网络整理
导读:我有以下矢量: words - c("5lang","kasverschil2","b2b") 我想删除“5lang”中的“5”和“kasverschil2”中的“2”.但我不想删除“b2b”中的“2”. 解决方法 gsub("^d+|d+$","",words) #[1] "lang" "kasverschil" "b2b" 另一种选择是使用stringi librar
我有以下矢量:

words <- c("5lang","kasverschil2","b2b")

我想删除“5lang”中的“5”和“kasverschil2”中的“2”.但我不想删除“b2b”中的“2”.

解决方法

gsub("^d+|d+$","",words)    
 #[1] "lang"        "kasverschil" "b2b"

另一种选择是使用stringi

library(stringi)
 stri_replace_all_regex(words,"^d+|d+$","")
  #[1] "lang"        "kasverschil" "b2b"

使用OP提供的数据集的变体这里是3个主要解决方案的基准(请注意,这些字符串非常短且设计;结果可能在较大的实际数据集上有所不同):

words <- rep(c("5lang","b2b"),100000)

library(stringi)
library(microbenchmark)

GSUB <- function() gsub("^d+|d+$",words)
STRINGI <- function() stri_replace_all_regex(words,"")
GREGEXPR <- function() {
    gregexpr(pattern='(^[0-9]+|[0-9]+$)',text = words) -> mm
    sapply(regmatches(words,mm,invert=TRUE),paste,collapse="") 
}

microbenchmark( 
    GSUB(),STRINGI(),GREGEXPR(),times=100L
)

## Unit: milliseconds
##        expr       min        lq    median        uq       max neval
##      GSUB()  301.0988  349.9952  396.3647  431.6493  632.7568   100
##   STRINGI()  465.9099  513.1570  569.1972  629.4176  738.4414   100
##  GREGEXPR() 5073.1960 5706.8160 6194.1070 6742.1552 7647.8904   100

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读