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 at
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 at 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]]