[R] Tying to underdressed the magic of lm redux
Berry, Charles
ccberry @end|ng |rom uc@d@edu
Sun Jun 2 05:23:23 CEST 2019
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 <jsorkin using 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
More information about the R-help
mailing list