John,

I believe the pieces you are missing are filed under 'computing on the 
language', 'passing unevaluated objects', and 'language objects'.

Forgive me if I belabor things you already know.  

lm, transform, and many other functions do their "magic" by operating on 
language objects.

You might find a read of the `Computing on the Language' section in Venables 
and Pipley's `S Programmming' useful aa background. There are probably many 
blogs and other on-line resources, too.

The unquoted things you want to operate on are language objects. deparse-ing 
those objects and trying to operate on character strings is one way to deal 
with such objects, but it can get messy.  

You might find that `transform.data.frame' provides a useful example of how to 
deal with language objects provided as arguments to a function.

I suggest you try `debugonce' on lm and on `transform.data.frame'. Run an 
example of each and inspect each object created along the way. 

For lm, you should aim to understand everything through this line: 

 mf <- eval(mf, parent.frame()) 

Getting familiar with `substitute', `match.call', `eval', and friends will help.

HTH,

Chuck

p.s. It sounds like what you want to do is to extend `transform.data.frame' in 
some way. ??

> On Jun 1, 2019, at 6:43 PM, Sorkin, John <jsor...@som.umaryland.edu> wrote:
> 
> Colleagues,
> 
> Despite Bert having tried to help me, I am still unable to perform a simple 
> act with a function. I want to pass the names of the columns of a dataframe 
> along with the name of the dataframe, and use the parameters to allow the 
> function to access the dataframe and modify its contents.
> 
> I apologize multiple postings regarding this question, but it is a 
> fundamental concept that one who wants to program in R needs to know.
> 
> T

______________________________________________
R-help@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.

Reply via email to