【发布时间】:2021-09-17 20:24:08
【问题描述】:
我有一个大数据框,我需要清理一个字符串列。一个同事写了一个函数,里面包含了几十个这样的语句:
word <- gsub("#","",word)
...
word <- gsub("&","",word)
除此之外几乎没有其他代码:
word <- str_replace_all(word, "[[:punct:]]", "")
word <- str_replace_all(word, "[^[:alnum:]]", "")
idx = rep(remove_numbers,length(word)) & grepl("\\D", word)
word[idx] <- gsub("^\\d+|\\d+$", "", word[idx])
该功能需要很长时间才能完成。 我正在寻找加快速度的方法。我的想法:
- 有没有办法将多个这样的
gsubs组合成一个?即,像gsub("#|&", "", word)这样的正则表达式 - 函数的并行化应用
【问题讨论】:
-
remove_numbers是什么?它是一个单一的逻辑值吗? -
Mabe PCRE 比 TRE 快。设置
perl=TRUE将从 TRE 切换到 PCRE:gsub("[^[:alnum:]]", "", word, perl=TRUE)
标签: r regex regexp-replace