Ludmila, boa tarde!
Usando a amostra dos dados que você postou, não consegui reproduzir o erro. Rodou normalmente. De qualquer modo, vale a dica do colega Rubem para usar split(). Uma vantagem é que as listas saem rotuladas (ver saída de uc_list vs. uc_list2 gerado pelo código que segue).
### <code r>
sp_names <- c("Abrothrix longipilis", "Aegialomys xanthaeolus",
"Acerodon celebensis", "Acerodon mackloti",
"Acomys airensis", "Acomys nesiotes")
data <- read.table(text='
ID;WDPAID;BINOMIAL;wdpaid
1;16861;Abrothrix longipilis;NA
2;129914;Aegialomys xanthaeolus;NA
3;1275;Acerodon celebensis;NA
4;1491;Acerodon celebensis;NA
5;1918;Acerodon celebensis;NA
6;1919;Acerodon celebensis;NA', header=T, row.names='ID', sep=';', as.is=T)
uc_list <- lapply(sp_names, function(x) data$WDPAID[data$BINOMIAL==x])
uc_list2 <- split(data$WDPAID, data$BINOMIAL)[sp_names]
### </code>