【问题标题】:dplyr: conditional filter with character strings as column namesdplyr:以字符串为列名的条件过滤器
【发布时间】:2018-01-25 10:04:59
【问题描述】:

我正在尝试 1) 使用 dplyr::filter 和字符串作为列名和 2) 同时使用 if 语句。然而,虽然其中任何一个本身都可以正常工作,但我很难将它们组合起来,这似乎是由于 if 语句中不能有逗号的问题。下面是 dplyr 0.7.1 的简​​化示例。

欢迎任何见解。非常感谢!!

library("dplyr")

df = data.frame(A=1:6, B=rep(c("good","bad"), 3), C=c("AA","AA","BB","BB","CC","CC"))

# with if statement but not character strings as column names - works
df %>% filter(if(T) {B %in% "good"}) 

# with character string as column names but no if statement - works
df %>% filter_at(vars("B"), any_vars(. %in% "good")) 

# doesn't work when I tried to combine the two
# Error: unexpected ',' in "df %>% filter_at(if(T){vars("B"),"
df %>% filter_at(if(T){vars("B"), any_vars(. %in% "good")})   

# tried to indicate the two parts in the if statement are really one item not two 
# by adding () or {}, and got the same complaint 
df %>% filter_at(if(T){(vars("B"), any_vars(. %in% "good"))}) 
df %>% filter_at(if(T){{vars("B"), any_vars(. %in% "good")}}) 

【问题讨论】:

    标签: r if-statement filter dplyr


    【解决方案1】:

    这行得通:

    df %>% filter_at(if(T){vars("B")}, any_vars(. %in% "good"))   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 2020-06-19
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-04
      相关资源
      最近更新 更多