From du@@@@dr|@n @end|ng |rom gm@||@com  Mon Apr 13 10:39:11 2020
From: du@@@@dr|@n @end|ng |rom gm@||@com (=?utf-8?Q?Adrian_Du=C8=99a?=)
Date: Mon, 13 Apr 2020 11:39:11 +0300
Subject: [Rd] detect ->
In-Reply-To: <CAD4oTHFUe+W+bBtC-e9uhOGkJUMTV317xPETXS+7iW-v9m7iNg@mail.gmail.com>
References: <6DB118E2-8C9A-4C5D-BC82-12B689C872FF@gmail.com>
 <CABtg=KmifDz6DbufPoBX0j4Suepm3pG6K=6PoPHJ4cCXAVYafg@mail.gmail.com>
 <CAD4oTHFUe+W+bBtC-e9uhOGkJUMTV317xPETXS+7iW-v9m7iNg@mail.gmail.com>
Message-ID: <3581EC66-BE5F-45ED-8F62-85A8AC69A660@gmail.com>

Thank you for your replies, this actually has little to do with the regular R code but more to signal what in my package QCA is referred to as a necessity relation A <- B (A is necessary for B) and sufficiency A -> B (A is sufficient for B).

If switched by the parser, A -> B becomes B <- A which makes B necessary for A, while the intention is to signal sufficiency for B.

Capturing in a quoted string is trivial, but I am now experimenting with substitute() to allow unquoted expressions.

This is especially useful when selecting A and B from the columns of a data frame, using: c(A, B) instead of c("A", "B") with a lot more quotes for more complex expressions using more columns.

I would be grateful for any pointer to a project that processes the code while it is still raw text. I could maybe learn from their code and adapt to my use case.

Best wishes,
Adrian

> On 13 Apr 2020, at 11:23, Gabriel Becker <gabembecker at gmail.com> wrote:
> 
> Adrian,
> 
> Indeed, this has come up in a few places, but as Gabor says, there is no such thing as right hand assignment at any point after parsing is complete.
> 
> This means the only feasible way to detect it, which a few projects do I believe, is process the code while it is still raw text, before it goes into the parser, and have clever enough regular expressions.
> 
> The next question, then, is why are you trying to detect right assignment. Doing so can be arguably useful fo linting, its true. Otherwise, though, because its not really a "real thing" when the R code is being executed, its not something thats generally meaningful to detect in most cases.
> 
> Best,
> ~G
> 
> On Mon, Apr 13, 2020 at 12:52 AM G?bor Cs?rdi <csardi.gabor at gmail.com> wrote:
> That parser already flips -> to <- before creating the parse tree.
> 
> Gabor
> 
> On Mon, Apr 13, 2020 at 8:39 AM Adrian Du?a <dusa.adrian at gmail.com> wrote:
> >
> > I searched and tried for hours, to no avail although it looks simple.
> >
> > (function(x) substitute(x))(A <- B)
> > #A <- B
> >
> > (function(x) substitute(x))(A -> B)
> > # B <- A
> >
> > In the first example, A occurs on the LHS, but in the second example A is somehow evaluated as if it occured on the RHS, despite my understanding that substitute() returns the unevaluated parse tree.
> >
> > Is there any way, or is it even possible to detect the right hand assignment, to determine whether A occurs on the LHS?
> >
> > Thanks in advance for any hint,
> > Adrian
> >
> > ?
> > Adrian Dusa
> > University of Bucharest
> > Romanian Social Data Archive
> > Soseaua Panduri nr. 90-92
> > 050663 Bucharest sector 5
> > Romania
> > https://adriandusa.eu
> >
> > ______________________________________________
> > R-devel at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

?
Adrian Dusa
University of Bucharest
Romanian Social Data Archive
Soseaua Panduri nr. 90-92
050663 Bucharest sector 5
Romania
https://adriandusa.eu



[Rd] detect ->
=?utf-8?Q?Adrian_Du=C8=99a?=