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
How to dynamically replace the text behind dollar sign: '$'
5 messages · David Winsemius, 谢一鸣
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
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>????
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
On Feb 5, 2013, at 10:48 PM, ??? wrote:
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?
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.
David.
> Thank you very much!
> Xie YM
>
> 2013-02-06 14:22:57?"David Winsemius" <dwinsemius at comcast.net> ?
> ??
>> 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
>>
David Winsemius, MD
Alameda, CA, USA
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>????
On?Feb?5,?2013,?at?10:48?PM,?????wrote:
?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?
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. --? David.
?Thank?you?very?much! ?Xie?YM ?2013-02-06?14:22:57?"David?Winsemius"?<dwinsemius at comcast.net>??? ???
?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
David?Winsemius,?MD Alameda,?CA,?USA