For reference, this has been fixed so that the precedence of "?" is lower than "=", as documented. Tomas
On 8/30/19 7:45 PM, peter dalgaard wrote: > ...and 14955, which seems to have the explanation (but was marked as > closed/fixed??). The parser does list '?' as lower precedence than '=', but > '='-assignments are not normal 'expr's which can appear as arguments to '?'. > (Presumably because of named arguments: f(a=b) differs from f(a<-b).) > > Other tokens which have lower precedence than assignments are flow-control > items, IF ELSE WHILE FOR REPEAT, but I don't see any way to confuse them in > the same way as '?'. > > It might be possible to resolve the situation by specifying '?' syntax > explicitly as > expr_or_assign '?' expr_or_assign, but, well, "There be Tygers here"... > > -pd > > >> On 30 Aug 2019, at 18:32 , Kevin Ushey <kevinus...@gmail.com> wrote: >> >> See also: https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16710 >> >> On Fri, Aug 30, 2019 at 9:02 AM William Dunlap via R-devel >> <r-devel@r-project.org> wrote: >>> Precedence is a property of the parser and has nothing to do with the >>> semantics assigned to various symbols. Using just core R functions you can >>> see the precedence of '?' is between those of '=' and '<-'. >>> >>>> # '=' has lower precedence than '?' >>>> str(as.list(parse(text="a ? b = c")[[1]])) >>> List of 3 >>> $ : symbol = >>> $ : language `?`(a, b) >>> $ : symbol c >>>> str(as.list(parse(text="a = b ? c")[[1]])) >>> List of 3 >>> $ : symbol = >>> $ : symbol a >>> $ : language `?`(b, c) >>>> # '<-' has higher precedence than '?' >>>> str(as.list(parse(text="a ? b <- c")[[1]])) >>> List of 3 >>> $ : symbol ? >>> $ : symbol a >>> $ : language b <- c >>>> str(as.list(parse(text="a <- b ? c")[[1]])) >>> List of 3 >>> $ : symbol ? >>> $ : language a <- b >>> $ : symbol c >>> >>> Bill Dunlap >>> TIBCO Software >>> wdunlap tibco.com >>> >>> >>> On Fri, Aug 30, 2019 at 4:41 AM Stephen Ellison <s.elli...@lgcgroup.com> >>> wrote: >>> >>>>> From: R-devel [mailto:r-devel-boun...@r-project.org] On Behalf Of Ant F >>>>> Sent: 29 August 2019 12:06 >>>>> To: r-devel@r-project.org >>>>> Subject: [Rd] ?Syntax wrong about `?`'s precedence ? >>>>> ... >>>>> See the following example : >>>>> >>>>> `?` <- `+` >>>> I'm curious; What did you expect to happen if you replace the function '?' >>>> with the operator '+' ? >>>> ? is surely now being evaluated as a user-defined function and not as an >>>> operator. >>>> Would you expect the results of doing that to be the same as evaluation >>>> without replacement? >>>> >>>> S Ellison >>>> >>>> >>>> >>>> >>>> ******************************************************************* >>>> This email and any attachments are confidential. Any u...{{dropped:10}} >>> ______________________________________________ >>> R-devel@r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-devel >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel