-2
aaa<-function() {
  for (i in 1:2) {
    rm(paste("aaa",i,sep=""),pos = ".GlobalEnv")
  }
}

aaa1<-"e!f!g!h!"
aaa2<-"e!f!g!h!"
aaa()

I tried to remove aaa1 and aaa2 with loop, but it doesn't seem to work.

stata
  • 513
  • 2
  • 6
  • 12

1 Answers1

2

You cannot pass a function that returns a character vector like that to rm. For example if you run

aaa1<-12   
x<-"aaa1"
rm(x)

it will remove x, not aaa1. So you can't remove variables by giving a list of strings to rm() like that.

However, rm() does have list= parameter that does allow you to specify a character vector. so

aaa<-function() {
  for (i in 1:2) {
    rm(list=paste("aaa",i,sep=""),pos = ".GlobalEnv")
  }
}

aaa1<-"e!f!g!h!"
aaa2<-"e!f!g!h!"
aaa()

will work.

MrFlick
  • 195,160
  • 17
  • 277
  • 295