[R] ls() pattern question

Andrew Simmons @kw@|mmo @end|ng |rom gm@||@com
Thu Jul 15 02:00:38 CEST 2021


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



More information about the R-help mailing list