One way to do this is by using group_by and summarisecount() from dplyr.
library(dplyr)
as_tibble(vector) %>%
count(value, name = "count") %>%
left_join(df, ., by = c("Door.Number" = "value"))
edit:
PS NB I think the left_join will leave an NA instead of a zero for any rows that don't match (where count is 0 it will just be omitted), so to be a really thorough solution you would add a line to replace NA with 0 in the final joined count column.
Haha! Well, like anything, it's simple if you know it, not always obvious if you don't. It's all just stuff learned along the way.
And as ever with R, there's more than one way to do it.