Поскольку вы отметили это как вопрос dplyr
, давайте использовать его:
library(dplyr)
check_df <- CheckUnsystematic(dat = long, deltaq = 0.025,
bounce = 0.1, reversals = 0, ncons0 = 2)
CleanAPT <- check_df %>%
filter(TotalPass == 3)
Причина, по которой CleanAPT <- long[ which(long$TotalPass==3),]
не работает, заключается в том, что вы вызываете фрейм данных long
(которыйне изменяется из функции CheckUnsystematic
).Выше я сохраняю результаты функции в check_df
.Таким образом, CleanAPT <- check_df[which(check_df$TotalPass==3),]
должно работать.
Слияние с исходными данными (трудно сказать точно, как это сделать, поскольку имена столбцов long
- поэтому предполагается, что id
присутствует и уникален), может бытьсделано с semi_join
из dplyr
:
long_filtered <- long %>%
mutate(id = as.character(id)) %>%
semi_join(CleanAPT %>%
mutate(id = as.character(id)),
by = "id")