You could use mapply to vectorized the pattern and fixed arguments.
mapply(
FUN = grepl,
pattern = c("^cat", "^cat", "c.t", "c.t"),
fixed = c(FALSE, TRUE, FALSE, TRUE),
MoreArgs = list(x = "^cat")
)
# ^cat ^cat c.t c.t
# FALSE TRUE TRUE FALSE
I'd suggest writing a function to handle this for you. How that functions works depends on your data and desired output.