R says "Cannot take a sample larger than the population" -- but I am not taking a sample larger than the population
You need to sample from the numbers, not from the data frame. Then use the results to get the sampled rows.
m <- males[sample(nrow(males), 3500, replace = FALSE, prob = NULL),]