У меня возникают проблемы при попытке использовать filter_at для фильтрации выбросов из нескольких столбцов в моих данных (если быть точным, последние 9 столбцов, 50:58). Я думаю, что отчасти проблема в том, что я не совсем понимаю, как работает .vars_predicate.
Когда я пытаюсь отфильтровать несколько столбцов, я обычно получаю следующие предупреждения:
Error:
.vars_predicatemust be a call toall_vars()orany_vars(), not logical
или же
Error:
.varsmust be a character/numeric vector or avars()object, not logical
Вот код, который работал для одного столбца [, 50]:
data3 <- data2 %>%
filter_at(abs(gaze_duration_n1_norm) <2.5)
Как я уже упоминал, у меня есть еще 8 столбцов, которые я хотел бы отфильтровать таким образом. Буду очень признателен за вашу помощь.
Спасибо!!!
У вас работает filter_at(.tbl = data2 , .vars = 50:58, .vars_predicate = all_vars(abs(.) < 2.5 ))?





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))
Спасибо, теперь работает отлично. Я просто до сих пор не совсем понимаю аргументы .vars () и .vars_predicate (), поэтому я не мог заставить функцию работать самостоятельно.
Рад, что помог. Сделал свой комментарий ответом, поэтому этот вопрос можно считать решенным (если вы принимаете). Читаем ?filter_at; .vars a "... числовой вектор позиций столбцов" и .vars_predicate "Цитируемое выражение предиката, возвращаемое all_vars() или any_vars(). Для некоторой предыстории это, возможно, стоит прочитать: vignette("programming")
Отлично, я проверю. Да, этот вопрос можно считать решенным, спасибо!
Пожалуйста, предоставьте полный рабочий пример данных и кода (это могут быть данные макета).