Remover objetos em .GlobalEnv de dentro de uma função

Eu gostaria de criar uma função (CleanEnvir), que basicamente chama remove / rm e remove certos objetos de.GlobalEnv.

  CleanEnvir <- function(pattern = "tmp"){
      rm(list = ls()[grep("tmp", ls())], envir = globalenv())
  }

  keep <- 1
  tmp.to.be.removed <- 0
  ls()

  ## does not work
  CleanEnvir()
  ls()

  ## does work
  rm(list = ls()[grep("tmp", ls())], envir = globalenv())
  ls()

questionAnswers(3)

yourAnswerToTheQuestion