加快 R 中的字符串过滤
Speed up string filtering in R
我有一个数据框,其中有一列代码用逗号分隔。我目前正在通过查看代码列来过滤此数据框,如果列表中出现代码,我将保留该行。我的问题是这个数据框正在扩展,可接受的代码列表也在扩展,所以我想尽可能加快这个过程。理想情况下,会有一种方法将行标记为已检查,如果行中有正确的代码,则不必再次检查所有其他可接受的代码。
当前数据框看起来像这样:
Code_column
,12ab,
,12ab,123b,
,456t,345u,
,12ab,789p,
优秀代码列表:
good_codes <- c(',123b,', ',456t,', ',345u,')
我目前的过滤过程:
df %>%
filter(sapply(`Code_column`,
function(x) any(sapply(good_codes, str_detect, string = x))) == TRUE)
最后一栏
Code_column
,12ab,123b,
,456t,345u,
我认为我们不需要sapply
df[str_detect(df$Code_column,paste(good_codes, collapse = '|')),]
[1] ",12ab,123b," ",456t,345u,"
你可以通过 | & 至 str_detect
paste(good_codes, collapse = '|')
[1] ",123b,|,456t,|,345u,"
我有一个数据框,其中有一列代码用逗号分隔。我目前正在通过查看代码列来过滤此数据框,如果列表中出现代码,我将保留该行。我的问题是这个数据框正在扩展,可接受的代码列表也在扩展,所以我想尽可能加快这个过程。理想情况下,会有一种方法将行标记为已检查,如果行中有正确的代码,则不必再次检查所有其他可接受的代码。
当前数据框看起来像这样:
Code_column
,12ab,
,12ab,123b,
,456t,345u,
,12ab,789p,
优秀代码列表:
good_codes <- c(',123b,', ',456t,', ',345u,')
我目前的过滤过程:
df %>%
filter(sapply(`Code_column`,
function(x) any(sapply(good_codes, str_detect, string = x))) == TRUE)
最后一栏
Code_column
,12ab,123b,
,456t,345u,
我认为我们不需要sapply
df[str_detect(df$Code_column,paste(good_codes, collapse = '|')),]
[1] ",12ab,123b," ",456t,345u,"
你可以通过 | & 至 str_detect
paste(good_codes, collapse = '|')
[1] ",123b,|,456t,|,345u,"