我在尝试使用filter_at
来过滤数据中多列的异常值时遇到麻烦(准确地说,最后9列是50:58)。我认为部分问题是我不完全了解.vars_predicate
的工作方式。
当我尝试过滤多个列时,通常会收到以下警告:
错误:
.vars_predicate
必须是对all_vars()
或any_vars()
的调用,而不是逻辑的
或
错误:
.vars
必须是字符/数字矢量或vars()
对象,而不是逻辑
这是为单个列[,50]工作的代码:
data3 <- data2 %>%
filter_at(abs(gaze_duration_n1_norm) <2.5)
就像我提到的那样,我还有8列希望通过这种方式进行过滤。非常感谢您的帮助。
谢谢!
答案 0 :(得分:1)
OP没有提供示例数据,但是从错误消息中,我们可能会猜测这可能有效
filter_at(.tbl = data2 , .vars = 50:58, .vars_predicate = all_vars(abs(.) < 2.5 ))
摘自?filter_at
# You can vary the selection of columns on which to apply the
# predicate. filter_at() takes a vars() specification:
filter_at(mtcars, vars(starts_with("d")), any_vars((. %% 2) == 0))