Hello,
First, `ls` does not support `!=` for pattern, but it's actually throwing a different error. For `rm`, the objects provided into `...` are substituted (not evaluated), so you should really do something like rm(list = ls(pattern = ...)) As for all except "con", "DB2", and "ora", I would try something like setdiff(ls(), c("con", "DB2", "ora")) and then add `rm` to that like rm(list = setdiff(ls(), c("con", "DB2", "ora"))) On Wed, Jul 14, 2021 at 7:41 PM Kai Yang via R-help <r-help@r-project.org> wrote: > Hello List, > I have many data frames in environment. I need to keep 3 data frames > only, con DB2 and ora. > I write the script to do this. > rm(ls(pattern != c("(con|DB2|ora)"))) > > > but it give me an error message: > > > Error in rm(ls(pattern != c("(con|DB2|ora)"))) : > ... must contain names or character strings > > I think the pattern option doesn't support != ? and is it possible to fix > this? > Thank you, > Kai > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.