我试图将R Shiny下拉菜单中的一个字符串(或字符串列表)(选择多个值)与数据表中特定列的数据进行匹配。
详情如下。
var_to_plot()
是指在R Shiny用户界面的下拉菜单中所选择的字符串列表(或单个字符串,如果只选择一个值)。它返回例如 Var1
df$Relevant_Column
我想让它与之相匹配的是这样的,如Test1_Var1, Test2_Var1, Test2_Var2
Var1
和 Var2
.sqldf
但没有成功,如下图所示。我尝试了以下方法。
使用Grepl(返回警告)。
df[grepl(var_to_plot(), df$Relevant_Column),]
使用SQLDF(由于某些原因,从var_to_plot()返回空DF)
df = sqldf("SELECT * FROM df WHERE Relevant_Column LIKE '%var_to_plot()%'")
你可能会想把搜索词连成一个有效的regex,用竖条分隔它们。
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)]