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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |