filter_if仅过滤不等于0的因子列

时间:2018-06-21 19:05:29

标签: r dplyr

就像标题中一样,我想删除所有我的因子列等于0的所有行。我发现,filter_if可能可以这样做,但是我努力充分理解语法。好吧,据我了解,设置为.vars_predicate的{​​{1}}参数应将all_vars(expr)应用于使用expr列选择的每个变量,并且仅在满足以下条件的情况下返回观察值:.predicate他们全部。因此,当我按如下所示指定它时:

expr

它应该返回所有因子变量都不为0的行。但是,它行不通,并且我得到的是空数据集,这当然是不正确的。我在哪里犯错了?

我的数据集如下所示:

df %>% filter_if(~is.factor(.), all_vars(. != 0))

1 个答案:

答案 0 :(得分:0)

很遗憾,我一开始没有想到,但是简单地添加is.na似乎就可以了:

df %>% filter_if(~is.factor(.), all_vars(. != 0 | is.na(.)))