Question

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.

Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top