私は、複数のパターンを含むベクトルとdata.tableの値を照合しようとしています。私が持っているデモ・コードは次のとおりです。効率的な方法パターンのベクトルとの正規表現の一致
正しく返しlibrary(data.table)
sites <- c("www.google.com", "plus.google.com", "www.yahoo.com", "www.bbc.co.uk")
patterns <- c("bb", "goog")
x <- data.table(sites)
# Regexp version of the in operator, iterates over a group
`%match_in%` <- function (values, match_list) {
sapply(values,
function (x, ml) {
any(sapply(ml, grepl, x, ignore.case=TRUE, perl=TRUE))
}
,match_list
)}
x[sites %match_in% patterns]
:これは、ネストされたsapplyが含まれているため
sites
1: www.google.com
2: plus.google.com
3: www.bbc.co.uk
をしかし、大きなdata.tablesで実行することは非常に遅いです。
これを行うより効率的な方法がありますが、これは大きなテーブルでも使用できますか?
NOTEを固執する:実際のコードでは、 'patterns'は、数百個のアイテムを持っており、正規表現は、物事を含み見た目のようなものなので、それらを1行に入れることは実用的ではありません。 – Iain