首页 > 解决方案 > dplyr::filter 错误必须是逻辑向量,而不是字符

问题描述

我正在尝试根据具有数据类型的列中的dataframe多个ID值来过滤。当我使用(AND)运行代码时,出现错误。IDcharacter|boolean

R我该如何解决这个问题dplyr

样本数据

ID      Date     Var1 Var2  
279557  1/1/2020 1    2
280485  1/2/2020 3    4
279556  1/3/2020 5    6
280484  1/4/2020 7    8
267254  1/5/2020 9    10
290512  1/6/2020 11   12

代码

library(dplyr)

df = df%>% 
  filter(df, ID== '279557' | ID == '280485' | ID == '279556' | ID == '280484')

错误:

x Input `..1$ID` must be a logical vector, not a character.

我知道我可以创建一个dataframe目标IDs并执行如下所示的操作。

这是在有条件的情况下这样做的唯一方法dplyr::filterboolean

target = c("29557", "280485", "279556", "280484")
df = df%>% 
      filter(df$ID %in% target)

标签: rdplyr

解决方案


我认为您不需要在调用中引用数据框filter

df <- data.frame(
  ID = 1:10
)

df = df %>% 
  filter(ID== '1' | ID == '5' | ID == '9')
df
  ID
1  1
2  5
3  9

推荐阅读