我的问题是我的方法和结论是否正确。
作为我学习正则表达式的一部分,我想弄清楚以哪种顺序学习各种替代方案(基础R和包)。我认为学习替代功能的相对速度可能会有所帮助。所以,我创建了一个字符串向量,并调用了我希望的等价表达式。
sites <- c("http://grand.test.com/", "https://example.com/",
"http://.big.time.bhfs.com/", "http://test.blogs.mvalaw.com/")
vec <- rep(x = sites, times = 1000) # creating a longish vector
base <- gsub("http:", "", vec, perl = TRUE)
stringr <- str_replace_all(vec, "http:", replacement = "")
stringi <- stri_replace_all_regex(str = vec, pattern = "http:", replacement = "")
qdap <- genX(text.var = vec, "http:", "")
然后我使用microbenchmarking
包对这四种方法进行了基准测试。
test <- microbenchmark(base <- gsub("http:", "", vec, perl = TRUE),
stringr <- str_replace_all(vec, "http:", replacement = ""),
stringi <- stri_replace_all_regex(str = vec, pattern = "http:", replacement = ""),
qdap <- genX(text.var = vec, "http:", ""),
times = 100)
我是否更正基数R gsub
是迄今为止最快的(我缩短了expr名称)?
expr min lq
base 1.697001 1.739393
stringr 3.814348 3.928360
stringi 5.888857 6.172212
qdap 120.670037 124.624946
median uq max neval
1.765051 1.833770 2.976780 100
3.979453 4.123138 7.032091 100
6.276407 6.500412 7.634943 100
127.493293 130.923663 173.155253 100
中位数时间非常不同,尤其是qdap