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

David Winsemius dwinsemius at comcast.net
Wed Feb 6 07:22:57 CET 2013

On Feb 5, 2013, at 8:07 PM, 谢一鸣 wrote:

> 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.

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

More information about the R-help mailing list