有没有办法根据可变长列表过滤数据帧?

问题描述 投票:0回答:1

我需要根据列表中包含的多个模式过滤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作为输入$ selectedbanks这一事实并不方便

我想要的

银行1 1银行A 2 3银行C 3 5银行E.

我得到的银行1 1银行A.

r shiny
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.