Segue uma ideia...
names <- c("Antônio João Carneiro", "Antônio Souza Brás Silva",
"Bento Munhoz Rocha Souza", "Carlos Henrique Omanneve",
"Damasceno Quiley", "Eustácio Silva Lima", "Fábio Enolair",
"Gustavo Byroleth")
names2 <- strsplit(names, ' ')
terms <- unlist(lapply(names2, length)); terms
n <- length(terms)
sapply(1:n, function(x) names2[[x]][1]) # Primeiro
sapply(1:n, function(x) names2[[x]][terms[x]]) # Último
sapply(1:n, function(x) paste(names2[[x]][-c(1,terms[x])], collapse=" ")) # Intermediários
sapply(1:n, function(x) (names2[[x]][-c(1,terms[x])])[1]) # Segundo nome...
### </code>