[R] match - returns a vector of the positions of (first) matches - looking for All positions.

William Dunlap wdunlap at tibco.com
Mon Feb 3 17:42:18 CET 2014


> table<-sample(letters[1:5], 20, replace=T)
> which(table %in% "a")
> [1]  1  2 19

How is this different than
   which( table == "a")
?  The latter is probably a tad faster.

I thought the OP had 2 vectors, x and table, and wanted a list the length
of x, such that the i'th element of the list gave the positions of the elements
of the table that matched x[i].  I don't know why this would be useful, but a
naive implementation would be
    f <- function(x, table)lapply(structure(x, names=x), function(xi)which(table == xi))
 used as
   > t1 <- c("a", "b", "a", "c", "b")
   > t2 <- c("b", "b", "c", "d", "c")
   > f(t1, t2)
   $a
   integer(0)

   $b
   [1] 1 2

   $a
   integer(0)
   
   $c
   [1] 3 5
   
   $b
   [1] 1 2

Bill Dunlap
TIBCO Software
wdunlap tibco.com


> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf
> Of PIKAL Petr
> Sent: Monday, February 03, 2014 6:03 AM
> To: Witold E Wolski
> Cc: r-help at r-project.org
> Subject: Re: [R] match - returns a vector of the positions of (first) matches - looking for
> All positions.
> 
> Hi
> 
> Posting questions without context may result in answers unrelated to your problem.
> 
> Anyway it works for me without problem
> 
> table<-sample(letters[1:5], 20, replace=T)
> which(table %in% "a")
> [1]  1  2 19
> 
> > version
>                _
> platform       i386-w64-mingw32
> arch           i386
> os             mingw32
> system         i386, mingw32
> status         Under development (unstable)
> major          3
> minor          1.0
> year           2013
> month          12
> day            19
> svn rev        64488
> language       R
> version.string R Under development (unstable) (2013-12-19 r64488)
> nickname       Unsuffered Consequences
> 
> Regards
> Petr
> 
> 
> > -----Original Message-----
> > From: Witold E Wolski [mailto:wewolski at gmail.com]
> > Sent: Monday, February 03, 2014 1:07 PM
> > To: PIKAL Petr
> > Cc: r-help at r-project.org
> > Subject: Re: [R] match - returns a vector of the positions of (first)
> > matches - looking for All positions.
> >
> > Hi Petr,
> >
> > I was actually citing the match (%in%) docu - match returns the
> > positions of (first) matches.
> >
> > I am looking for something returning ALL matches (sure it's easy to
> > write a function which does it ...
> > my intuition however is, that there is already such a function in R -
> > is there something which isn't already implemented in R? Not that I
> > know of. )
> >
> > regarding :
> >
> > which(table == match)
> >
> > in case table is a vector the output produced is going to be:
> >
> > Warning message:
> > In table == match :
> >   longer object length is not a multiple of shorter object length
> >
> >
> >
> > regards
> >
> >
> > On 3 February 2014 11:36, PIKAL Petr <petr.pikal at precheza.cz> wrote:
> > > Hi
> > >
> > > which(table == match)
> > >
> > > or
> > >
> > > which(table %in% match)
> > >
> > > Petr
> > >
> > >
> > >> -----Original Message-----
> > >> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> > >> project.org] On Behalf Of Witold E Wolski
> > >> Sent: Monday, February 03, 2014 11:19 AM
> > >> To: r-help at r-project.org
> > >> Subject: [R] match - returns a vector of the positions of (first)
> > >> matches - looking for All positions.
> > >>
> > >> Looking for a build in function which returns a vector of the
> > >> positions of _ALL_ matches.
> > >>
> > >>
> > >>
> > >>
> > >> --
> > >> Witold Eryk Wolski
> > >>
> > >> ______________________________________________
> > >> R-help at r-project.org mailing list
> > >> 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.
> > >
> > > ________________________________
> > > Tento e-mail a jakékoliv k němu připojené dokumenty jsou důvěrné a
> > jsou určeny pouze jeho adresátům.
> > > Jestliže jste obdržel(a) tento e-mail omylem, informujte laskavě
> > neprodleně jeho odesílatele. Obsah tohoto emailu i s přílohami a jeho
> > kopie vymažte ze svého systému.
> > > Nejste-li zamýšleným adresátem tohoto emailu, nejste oprávněni tento
> > email jakkoliv užívat, rozšiřovat, kopírovat či zveřejňovat.
> > > Odesílatel e-mailu neodpovídá za eventuální škodu způsobenou
> > modifikacemi či zpožděním přenosu e-mailu.
> > >
> > > V případě, že je tento e-mail součástí obchodního jednání:
> > > - vyhrazuje si odesílatel právo ukončit kdykoliv jednání o uzavření
> > smlouvy, a to z jakéhokoliv důvodu i bez uvedení důvodu.
> > > - a obsahuje-li nabídku, je adresát oprávněn nabídku bezodkladně
> > přijmout; Odesílatel tohoto e-mailu (nabídky) vylučuje přijetí nabídky
> > ze strany příjemce s dodatkem či odchylkou.
> > > - trvá odesílatel na tom, že příslušná smlouva je uzavřena teprve
> > výslovným dosažením shody na všech jejích náležitostech.
> > > - odesílatel tohoto emailu informuje, že není oprávněn uzavírat za
> > společnost žádné smlouvy s výjimkou případů, kdy k tomu byl písemně
> > zmocněn nebo písemně pověřen a takové pověření nebo plná moc byly
> > adresátovi tohoto emailu případně osobě, kterou adresát zastupuje,
> > předloženy nebo jejich existence je adresátovi či osobě jím zastoupené
> > známá.
> > >
> > > This e-mail and any documents attached to it may be confidential and
> > are intended only for its intended recipients.
> > > If you received this e-mail by mistake, please immediately inform its
> > sender. Delete the contents of this e-mail with all attachments and its
> > copies from your system.
> > > If you are not the intended recipient of this e-mail, you are not
> > authorized to use, disseminate, copy or disclose this e-mail in any
> > manner.
> > > The sender of this e-mail shall not be liable for any possible damage
> > caused by modifications of the e-mail or by delay with transfer of the
> > email.
> > >
> > > In case that this e-mail forms part of business dealings:
> > > - the sender reserves the right to end negotiations about entering
> > into a contract in any time, for any reason, and without stating any
> > reasoning.
> > > - if the e-mail contains an offer, the recipient is entitled to
> > immediately accept such offer; The sender of this e-mail (offer)
> > excludes any acceptance of the offer on the part of the recipient
> > containing any amendment or variation.
> > > - the sender insists on that the respective contract is concluded
> > only upon an express mutual agreement on all its aspects.
> > > - the sender of this e-mail informs that he/she is not authorized to
> > enter into any contracts on behalf of the company except for cases in
> > which he/she is expressly authorized to do so in writing, and such
> > authorization or power of attorney is submitted to the recipient or the
> > person represented by the recipient, or the existence of such
> > authorization is known to the recipient of the person represented by
> > the recipient.
> >
> >
> >
> > --
> > Witold Eryk Wolski
> 
> ________________________________
> Tento e-mail a jakékoliv k němu připojené dokumenty jsou důvěrné a jsou určeny pouze
> jeho adresátům.
> Jestliže jste obdržel(a) tento e-mail omylem, informujte laskavě neprodleně jeho
> odesílatele. Obsah tohoto emailu i s přílohami a jeho kopie vymažte ze svého systému.
> Nejste-li zamýšleným adresátem tohoto emailu, nejste oprávněni tento email jakkoliv
> užívat, rozšiřovat, kopírovat či zveřejňovat.
> Odesílatel e-mailu neodpovídá za eventuální škodu způsobenou modifikacemi či
> zpožděním přenosu e-mailu.
> 
> V případě, že je tento e-mail součástí obchodního jednání:
> - vyhrazuje si odesílatel právo ukončit kdykoliv jednání o uzavření smlouvy, a to z
> jakéhokoliv důvodu i bez uvedení důvodu.
> - a obsahuje-li nabídku, je adresát oprávněn nabídku bezodkladně přijmout; Odesílatel
> tohoto e-mailu (nabídky) vylučuje přijetí nabídky ze strany příjemce s dodatkem či
> odchylkou.
> - trvá odesílatel na tom, že příslušná smlouva je uzavřena teprve výslovným dosažením
> shody na všech jejích náležitostech.
> - odesílatel tohoto emailu informuje, že není oprávněn uzavírat za společnost žádné
> smlouvy s výjimkou případů, kdy k tomu byl písemně zmocněn nebo písemně pověřen a
> takové pověření nebo plná moc byly adresátovi tohoto emailu případně osobě, kterou
> adresát zastupuje, předloženy nebo jejich existence je adresátovi či osobě jím zastoupené
> známá.
> 
> This e-mail and any documents attached to it may be confidential and are intended only
> for its intended recipients.
> If you received this e-mail by mistake, please immediately inform its sender. Delete the
> contents of this e-mail with all attachments and its copies from your system.
> If you are not the intended recipient of this e-mail, you are not authorized to use,
> disseminate, copy or disclose this e-mail in any manner.
> The sender of this e-mail shall not be liable for any possible damage caused by
> modifications of the e-mail or by delay with transfer of the email.
> 
> In case that this e-mail forms part of business dealings:
> - the sender reserves the right to end negotiations about entering into a contract in any
> time, for any reason, and without stating any reasoning.
> - if the e-mail contains an offer, the recipient is entitled to immediately accept such
> offer; The sender of this e-mail (offer) excludes any acceptance of the offer on the part
> of the recipient containing any amendment or variation.
> - the sender insists on that the respective contract is concluded only upon an express
> mutual agreement on all its aspects.
> - the sender of this e-mail informs that he/she is not authorized to enter into any
> contracts on behalf of the company except for cases in which he/she is expressly
> authorized to do so in writing, and such authorization or power of attorney is submitted
> to the recipient or the person represented by the recipient, or the existence of such
> authorization is known to the recipient of the person represented by the recipient.
> 
> ______________________________________________
> R-help at r-project.org mailing list
> 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