R 数据中的部分字符串匹配 Table

Partial String Match in R Data Table

我正在尝试将 R Shiny 下拉菜单(选择了多个值)中的字符串(或字符串列表)与数据的特定列中的数据进行匹配-table.

详情:

我试过以下方法:

  1. 使用 Grepl(returns 警告):

    df[grepl(var_to_plot(), df$Relevant_Column), ]

  2. 使用 SQLDF(returns 空 DF 因为某些原因它不会与 var_to_plot() 匹配)

    df = sqldf("SELECT * FROM df WHERE Relevant_Column LIKE '%var_to_plot()%'")

您可能希望将搜索词连接成一个有效的正则表达式,方法是用竖线分隔它们。

df <- data.frame(
  rowid = 1:4,
  Relevant_Column = c("Test1_Var1", "Test2_Var1", "Test2_Var2", "Text3_Var3")
)

var_to_plot <- c("Var1", "Var2")

## Base R.
df[grepl(paste(var_to_plot, collapse = "|"), df$Relevant_Column), ]

## Tidyverse.
library("stringr")
library("dplyr")
filter(df, str_detect(Relevant_Column, str_c(var_to_plot, collapse = "|")))

## data.table
library("data.table")
DT <- as.data.table(df)
DT[grepl(paste(var_to_plot, collapse = "|"), Relevant_Column)]