I am trying to filter a column which contains several keywords (in this example dog and cat) but I am having problems as only the first element is being used.
grep can use | as an or, so why not paste your filters together with | as a separator:
grep
|
dfilter <- df1[grep(paste0(filter1, collapse = "|"), df1$type),]