[ESS] Feature idea: insert expression before <- at point

Sven Hartenstein ||@t@ @end|ng |rom @venh@rten@te|n@de
Tue May 14 18:23:01 CEST 2019


Hi Vitalie,

thank you for the hint! Seems like I should finally learn dplyr and
change my coding style.

Sven


Am 06.05.19 um 13:25 schrieb Vitalie Spinu:
> 
> Hi Sven,
> 
> My suggestion would be that instead of cluttering your code with such "old
> fashion" assignments you would switch to dplyr mutate or data.table's inline
> :=. Both are the de-facto standards in the wild by now.
> 
>   Vitalie
> 
>>> On Tue, Apr 30 2019 15:28, Alex Branham via ESS-help wrote:
> 
>> On Tue 30 Apr 2019 at 13:25, Sven Hartenstein via ESS-help <ess-help using r-project.org> wrote:
> 
>>> Dear ESS users and developers,
>>>
>>> when writing R code to manipulate an object or data frame column, I
>>> often find myself retyping the expression on the left side of "<-" as
>>> some argument for a function call or assignment on the right side of
>>> "<-".
>>>
>>> Here are two examples. Imagine your point is at _POINT_ and you want to
>>> insert 'data[,"columnA"]' in the first example and in the second example
>>> 'data[ data[,"columnB"] < 123 ,"columnA"]' at point.
>>>
>>> data[,"columnA"] <- tolower(_POINT_)
>>>
>>> data[ data[,"columnB"] > 123 ,"columnA"] <- gsub("xxx",
>>>                                                    "yyy",
>>>                                                    _POINT_,
>>>                                                    fixed=TRUE)
>>>
>>> Wouldn't it be handy to have a lisp function which copies the expression
>>> on the left side of "<-" and inserts it at point?
>>>
>>> Or is something like this already available in ESS?
> 
>> Not to my knowledge, no.
> 
>>> What do you think?
> 
>> I don't think it's a terrible idea; I've found myself wanting to do that
>> several times in the past (though less so now with magrittr pipes).
> 
>> I guess implementation-wise the tricky bit would be figuring out what to
>> do in the case of 1) more than one assignment e.g. x <- y <- 2 and also
>> 2) how to find the start of the "left" side. It would be tricky to
>> differentiate between:
> 
>> x[[
>>    1]] <- 1
> 
>> and
> 
>> x <- 1
>> y <- 2
> 
>> since we can't reliably detect complete R, especially not backwards. I
>> guess one quick workaround would be to work with indentation --- just to
>> take all the lines starting with whitespace before the <- until we find
>> one all-whitespace line or the first line that doesn't start with
>> whitespace.
> 
>> Thanks for the suggestion,
>> Alex
> 
>> ______________________________________________
>> ESS-help using r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/ess-help
>



More information about the ESS-help mailing list