有没有一种方法可以根据可变长列表来过滤数据帧?

时间:2019-04-30 10:14:11

标签: r shiny

我需要根据列表中包含的多个模式过滤df的列。我的总体目标是将其应用于闪亮的应用程序的checkboxGroupInput命令。

我需要过滤列,例如在数据框中说“ bank”列,说“ df”。标准(例如“ bankA” |“ bankC” |“ bankE”)包含在列表中(例如,selectedbanks <-list(“ bankA”,“ bankC”,“ bankE”))。我想在df $ bank列中选择满足selectedbanks中任何条件的任何行。

df<-data.frame(a=1:5,bank=c("bankA","bankB","bankC","bankD","bankE"))
selectedbanks<-list("bankA","bankC","bankE")

我尝试过

df %>% filter(bank==selectedbanks)

既不总是有效的,也不是很正确,因为事实上R会显示有关筛选条件中所涉及对象的不同长度的错误。

我知道正确的基本方法是使用

df %>% filter(bank==selectedbanks[1] | bank==selectedbanks[2] | bank==selectedbanks[3])

,但这并不能使我立即从类型为checkboxGroupInput的闪亮应用程序中以可变长度一次性获取列表selectedbanks作为input $ selectedbanks的事实

我想要的

银行 1 1银行 2 3银行 3 5 bankE

我得到了什么   一个银行 1 1银行A

1 个答案:

答案 0 :(得分:0)

您必须使用%in%:

# Library
library(dplyr)

# Your data
df<-data.frame(a=1:5,bank=c("bankA","bankB","bankC","bankD","bankE"))

# Your banks
selectedbanks<-c("bankA","bankC","bankE")

# Filtering
df %>% filter(bank %in% selectedbanks)