[R] & and |

William Dunlap wdun|@p @end|ng |rom t|bco@com
Wed Aug 19 18:33:21 CEST 2020


Instead of intersect you could use grepl(pattern1,x) &
grepl(pattern2,x).  Use which() on the result if you must have
integers, but the logicals that grepl() produces are often easier to
use as subscripts.

Bill Dunlap
TIBCO Software
wdunlap tibco.com

On Wed, Aug 19, 2020 at 8:54 AM Ivan Calandra <calandra using rgzm.de> wrote:
>
> Indeed!
> I was just hoping that there would be a shorter way... intersect() is a
> nice alternative too. Maybe I can make it work with pipes so that I
> don't have to repeat "mydata" but that's another story.
>
> Thank you for the help!
> Ivan
>
> --
> Dr. Ivan Calandra
> TraCEr, laboratory for Traceology and Controlled Experiments
> MONREPOS Archaeological Research Centre and
> Museum for Human Behavioural Evolution
> Schloss Monrepos
> 56567 Neuwied, Germany
> +49 (0) 2631 9772-243
> https://www.researchgate.net/profile/Ivan_Calandra
>
> On 19/08/2020 17:31, Bert Gunter wrote:
> > Well... wouldn't it be:
> >
> > rep("(ConfoMap.*GuineaPigs)|(GuineaPigs.*ConfoMap)", mydata, value=TRUE)
> >
> > 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, Aug 19, 2020 at 8:23 AM Ivan Calandra <calandra using rgzm.de
> > <mailto:calandra using rgzm.de>> wrote:
> >
> >     Thank you Bert for the pointer.
> >
> >     So I guess the solution is:
> >     grep("ConfoMap.+GuineaPigs", mydata, value=TRUE)
> >
> >     This is not the case here, but what if "GuineaPigs" comes before
> >     "ConfoMap"?
> >     Of course I could do two "grep()" calls, but if there a better
> >     solution?
> >
> >     Ivan
> >
> >     --
> >     Dr. Ivan Calandra
> >     TraCEr, laboratory for Traceology and Controlled Experiments
> >     MONREPOS Archaeological Research Centre and
> >     Museum for Human Behavioural Evolution
> >     Schloss Monrepos
> >     56567 Neuwied, Germany
> >     +49 (0) 2631 9772-243
> >     https://www.researchgate.net/profile/Ivan_Calandra
> >
> >     On 19/08/2020 17:07, Bert Gunter wrote:
> >     > "&" is not a regex metacharacter.
> >     > See ?regexp
> >     >
> >     > 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, Aug 19, 2020 at 7:53 AM Ivan Calandra <calandra using rgzm.de
> >     <mailto:calandra using rgzm.de>
> >     > <mailto:calandra using rgzm.de <mailto:calandra using rgzm.de>>> wrote:
> >     >
> >     >     Dear useRs,
> >     >
> >     >     I feel really stupid, but I cannot understand why "&"
> >     doesn't work
> >     >     as I
> >     >     expect, while "|" does.
> >     >
> >     >     I have the following vector:
> >     >     mydata <- c("SSFA-ConfoMap_GuineaPigs_NMPfilled.csv",
> >     >     "SSFA-ConfoMap_Lithics_NMPfilled.csv",
> >     >     "SSFA-ConfoMap_Sheeps_NMPfilled.csv",
> >     >     "SSFA-Toothfrax_GuineaPigs.xlsx",
> >     >     "SSFA-Toothfrax_Lithics.xlsx", "SSFA-Toothfrax_Sheeps.xlsx")
> >     >     and I want to find the values that include both "ConfoMap" and
> >     >     "GuineaPigs".
> >     >
> >     >     If I do:
> >     >     grep("ConfoMap&GuineaPigs", mydata, value=TRUE)
> >     >     it returns an empty vector, character(0).
> >     >
> >     >     But if I do:
> >     >     grep("ConfoMap|GuineaPigs", mydata, value=TRUE)
> >     >     it returns all the elements that include either "ConfoMap" or
> >     >     "GuineaPigs", as I would expect.
> >     >
> >     >     So what is wrong with my "&" construct? How can I return the
> >     elements
> >     >     that include both parts?
> >     >
> >     >     Thank you for your help!
> >     >     Ivan
> >     >
> >     >     --
> >     >     Dr. Ivan Calandra
> >     >     TraCEr, laboratory for Traceology and Controlled Experiments
> >     >     MONREPOS Archaeological Research Centre and
> >     >     Museum for Human Behavioural Evolution
> >     >     Schloss Monrepos
> >     >     56567 Neuwied, Germany
> >     >     +49 (0) 2631 9772-243
> >     >     https://www.researchgate.net/profile/Ivan_Calandra
> >     >
> >     >     ______________________________________________
> >     >     R-help using r-project.org <mailto:R-help using r-project.org>
> >     <mailto:R-help using r-project.org <mailto: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.
> >     >
> >
> >     ______________________________________________
> >     R-help using r-project.org <mailto: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.
> >
>
> ______________________________________________
> 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.



More information about the R-help mailing list