You could try splitting into both forename and surname then merging back to one:
dt<-dat %>% separate(name, into = c('name', 'name2', 'class', 'pack'), sep = " ", convert = TRUE)
dt$name <- paste(dt$name,dt$name2)
#Get rid of name2
dt <- dt[,-2]
I'm sure someone will have a tidier answer.