Message-ID: <84ceeb59-8aa5-6d4c-55d7-112e7720499e@gmail.com>
Date: 2021-07-15T09:09:01Z
From: Duncan Murdoch
Subject: ls() pattern question
In-Reply-To: <CAGxFJbSAKuWD1m6P=NUAEwxYoAortb6kUNzbVtEmR3NCh6HMdg@mail.gmail.com>
On 14/07/2021 8:21 p.m., Bert Gunter wrote:
> Actually fun( param != something..) is syntactically incorrect in the first
> place for any function!
You have to be careful with absolute statements:
> f <- function(pattern) cat("It's legal!")
> f(pattern != something..)
It's legal!
"pattern != something.." is a legal expression, which would return a
logical vector. My function didn't ever evaluate it, so the fact that
variables named "pattern" and "something.." didn't exist in the global
env didn't make any difference. It's legal syntax, just wrong.
Duncan Murdoch
>
> ls sees "pat != whatever" as the "name" argument of ls() and can't make
> any sense of it, of course.
>
> Bert Gunter
>
> "The trouble with having an open mind is that people keep coming along and
> sticking things into it."
> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>
>
> On Wed, Jul 14, 2021 at 5:01 PM Andrew Simmons <akwsimmo at gmail.com> wrote:
>
>> 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]]
>>
>> ______________________________________________
>> 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]]
>
> ______________________________________________
> 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.
>