Skip to content

How to dynamically replace the text behind dollar sign: '$'

5 messages · David Winsemius, 谢一鸣

#
Dear ALL,

I need a function that takes character string as argument value and replaces corresponding argument( which is behind dollar sign "$") in function body with its value.  
  
For example:    

function(dataframe, argument="ANYTHING I WANT")
{   
       return(dataframe$argument)   
 }    

Even though I know there must be lots of possible alternative ways to do this, I really want to do the job just like the form in the above example and which I believe that has a close connection with "Programming on language" style(I read the term on some guides but really got no clue whether I refer to it here in a right way). 
Anyone who happens to know the method or the mechanism please kindly let me know. Thank you very much, and please reply in very simple English, because i am a poor English user.    

Thanks again,    
Xie YM
#
On Feb 5, 2013, at 8:07 PM, ??? wrote:

            
The "$" construction is only a syntactic shortcut for "[["argument"]].  
What you are looking for is described in the ?"[[" page. You should be  
constructing a formal that is assigned a syntactically legal column  
name ...  NOT "ANYTHING I WANT". Perhaps:

function(dfrm , colname = "V1") {
       return( dfrm[[ colname ]] )
# the argument will get evaluated as "V1" unless an alternate colname  
argument is supplied
       }

( You can't get "$" to evaluate a character column name.)

--
David Winsemius, MD
Alameda, CA, USA
#
Thanks David, your solution perfectly solve my problem. But Do you know what exactly the mechanism of "Computing on the language" in pdf file: "R language definition", Can that "THING" do the same job?

Thank you very much!
Xie YM

2013-02-06?14:22:57?"David?Winsemius"?<dwinsemius at comcast.net>????
#
On Feb 5, 2013, at 10:48 PM, ??? wrote:

            
I wouldn't consider that to be "computing on the language. There is an  
entire Section 6 regarding "computing on the Language". I don't see  
evidence that you have read it yet. "Computing on the language"  
generally refers to manipulation objects of 'language' class before  
they get evaluated.
#
Thank you, David. I believe you have made the thing more clear to me.

Best Regards,
Xie YM

??2013-02-06?16:14:18?"David?Winsemius"?<dwinsemius at comcast.net>????