首页 > 解决方案 > 检测数据框中的任何字符是否存在于字符串列表中

问题描述

我有一组字符串,我想检查它们是否包含在单独的数据框中动态创建的任何字符。例如:

library(dplyr)
library(stringr)

#Create data frame of Values to check against
df <- data.frame(Value = 33:53) #these values will be dynamic

#Add in Utf8 conversion
df <- df %>% rowwise() %>% mutate(Utf8 = intToUtf8(Value))

#create data frame of strings to check
df_check <- data.frame(string = c("CDEFFFFFFFEFADFFFFF","CDEFFFFFFF&FADFFFFF"))

我现在想检查字符串是否包含 中的任何字符,并在新列或新列中df输出。我不想使用标准的正则表达式来检查是否存在任何字符,因为 的长度可以是可变的并且可以省略某些字符。我可以像这样检查单个字符(这给了我想要的输出,但只有一个字符):TRUEFALSEdf

df_check <- df_check %>% rowwise() %>% mutate(contains_chr = list(str_detect(string,"&")))

> string                contains_chr
> CDEFFFFFFFE!FADFFFFF  FALSE
> CDEFFFFFFF&!FADFFFFF  TRUE

如何制作“contains_chr”列TRUEFALSE根据是否df出现任何字符?我试过这个但它失败了:

df_check <- df_check %>% rowwise() %>% mutate(contains_chr = list(str_detect(string,df)))

Error: Problem with `mutate()` column `contains_chr`.
ℹ `contains_chr = list(str_detect(string, df))`.
x no applicable method for 'type' applied to an object of class "c('rowwise_df', 'tbl_df', 'tbl', 'data.frame')"
ℹ The error occurred in row 1.

我不知道如何检查df$Utf8. 我可能可以将它放入 for 循环中的每一行df,但是有数百万个字符串,这似乎会很慢。

标签: rdplyr

解决方案


推荐阅读