Your function seems to be broken in many different sections, but you could just do:
library(rgdal)
setwd("~/type1/")
species <- 'speciesX1'
list_shp <- list.files(path=species, pattern="*.shp", full.names = TRUE,
recursive = TRUE, include.dirs = FALSE)
shp_objects <- lapply(list_shp, function(x) {readOGR(dsn=x,
layer=ogrListLayers(x))})
This will give you a list of SpatialPolygonDataframe
objects that you can then merge.