Мы можем перебрать интересующие столбцы и применить функцию, затем Reduce
ее к одному логическому вектору с &
# create a function based on the logic
f1 <- function(x) x < 1.5 * IQR(x) | x > 1. 5 * IQR(x)
# loop through the columns with lapply, apply the 'f1'
# and Reduce it to single logical vector
nm1 <- paste0("A", c(1, 4, 5, 8, 10))
i1 <- Reduce(`&`, lapply(df[nm1], f1))
# subset the rows
out <- subset(df, i1)
Или другой вариант после создания функции - использовать filter_at
library(dplyr)
df %>%
filter_at(vars(nm1), all_vars(f1))