Если вы хотите использовать регулярные выражения, вы можете использовать grepl
вместо %in%
data <- data.frame(letters=c("a","b","c"))
cols <- paste0('^', c(".*","a","b"), '$')
for (j in 1:3){
df <- data %>% filter(grepl(cols[j], letters))
# write.csv(df,paste("result_",j,".csv", sep = ""), row.names = F)
print(df)
}
Поскольку вы уже используете один пакет tidyverse (dplyr), вас может заинтересовать альтернатива tidyverse этому циклу, используя purrr::iwalk
library(purrr)
iwalk(cols, ~{
df <- data %>% filter(grepl(.x, letters))
write.csv(df, paste("result_", .y, ".csv", sep = ""), row.names = F)
})