[R] Passing a Data Frame Name as a Variable in a Function

peter dalgaard pdalgd at gmail.com
Thu Jan 29 12:11:55 CET 2015


On 29 Jan 2015, at 07:34 , Jeff Newmiller <jdnewmil at dcn.davis.ca.us> wrote:

> This approach is fraught with dangers.
> 
> I recommend that you put all of those data frames into a list and have your function accept the list and the name and use the list indexing operator mylist[[DFName]] to refer to it. Having functions that go fishing around in the global environment will be hard to maintain at best, and buggy at worst.

Agreed. However, just to help understand the issue: 
 
DFName is a length-one vector of character strings, not the object that has the name contained in the string. I.e. you can do nchar(DFName) and presumably get the value 7, but there is no operation on df.1001 that can tell you the length of its name. You can (but shouldn't, as per Jeff's note) get from name to object using get()/assign() and also via some concoctions involving combinations of eval(), parse(), as.name(), and substitute(). 

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-help mailing list