Statistical sampling from a vector
Your code is quite good. Simulations is hard to vectorize. The largest slowdown here is the repeated calling of rbind in loop. It is faster to crate list of vectors and concatenate the results at the end. So  I edited the necessary parts:

Est3 &lt;- function(n, mean, sd, lower, upper, samp_min, samp_max, samp_int, nsim) {
  Data &lt;- round(rtnorm(n, mean, sd, lower, upper), digits = 0)
  Samp_size &lt;- seq(samp_min, samp_max, samp_int)
  Results &lt;- list() # crate emty list
  for (i in 1:nsim) {
    Results_samp &lt;- list() # crate emty list
    for (j in seq_along(Samp_size)) {
      Nsubj &lt;- Samp_size[j]
      SUS_Score &lt;- sample(Data, Nsubj, replace = TRUE)
      Mean &lt;- mean(SUS_Score, na.rm = TRUE)
      SD &lt;- sd(SUS_Score, na.rm = TRUE)
      Results_samp[[j]] &lt;- c(Nsubj, Mean, SD) # add values to list
    }
    Results[[i]] &lt;- Reduce(rbind, Results_samp) # convert list to matrix and add to main list
  }
  Results &lt;- Reduce(rbind, Results) # 'rbind' list of matrices
  Results &lt;- as.data.frame(Results, row.names = F) # convert to data.frame
  colnames(Results) &lt;- c('Nsubj', 'Mean', 'SD') # add names
  Results %&gt;% arrange(Nsubj)
}