[R] as.character(quote(x$y) ) = "$" "x" "y" not "x$y"?

Bert Gunter gunter.berton at gene.com
Fri May 9 15:48:59 CEST 2014


Ahhh. Thanks Duncan.

-- Bert

Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374

"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
H. Gilbert Welch




On Fri, May 9, 2014 at 2:41 AM, Duncan Murdoch <murdoch.duncan at gmail.com> wrote:
> On 09/05/2014, 2:41 AM, Bert Gunter wrote:
>>
>> Spencer:
>>
>> Hmmm....
>> Well, I don't get what's going on here -- as.character.default is
>> internal -- but could you method-ize a simple synonym:
>
>
> See ?InternalMethods:
>
> "For efficiency, internal dispatch only occurs on objects, that is those for
> which is.object returns true."
>
> Duncan Murdoch
>
>
>>
>> asChar<- function(e,...)UseMethod("asChar")
>> asChar.call <- function(e,...)deparse(e,...)
>> asChar.default <- function(e,...)as.character(e,...)
>>
>>> asChar(xDy)
>>
>> [1] "x$y"
>>
>>> asChar(1:5)
>>
>> [1] "1" "2" "3" "4" "5"
>>
>>
>> Cheers,
>> Bert
>>
>> Bert Gunter
>> Genentech Nonclinical Biostatistics
>> (650) 467-7374
>>
>> "Data is not information. Information is not knowledge. And knowledge
>> is certainly not wisdom."
>> H. Gilbert Welch
>>
>>
>>
>>
>> On Thu, May 8, 2014 at 8:56 PM, Spencer Graves
>> <spencer.graves at structuremonitoring.com> wrote:
>>>
>>> On 5/8/2014 8:05 PM, Bert Gunter wrote:
>>>>
>>>>
>>>> [1] "x$y"
>>>>
>>>> Spencer:
>>>>
>>>> Does
>>>>
>>>> deparse(substitute(x$y))
>>>> [1] "x$y"
>>>>
>>>> do what you want?
>>>
>>>
>>>
>>>
>>>        No:  The problem is methods dispatch.  class(quote(x$y)) = 'call',
>>> but
>>> as.character(quote(x$y)) does NOT go to "as.character.call".
>>>
>>>
>>>        deparse(quote(x$y)) returns the answer I want, as Greg Snow noted
>>> earlier.
>>>
>>>
>>>        However, it would be easier to remember if I could write
>>> as.character(quote(x$y)) and get the same thing.
>>>
>>>
>>>        With "as.character.call <- function(x, ...)deparse(x, ...)",
>>> as.character.call(quote(x$y)) returns "x$y", as desired. However, the
>>> methods dispatch one might naively expect fails, as noted above.
>>>
>>>
>>>        Thanks,
>>>        Spencer
>>>
>>>> Cheers,
>>>> Bert
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> -- Bert
>>>>
>>>> Bert Gunter
>>>> Genentech Nonclinical Biostatistics
>>>> (650) 467-7374
>>>>
>>>> "Data is not information. Information is not knowledge. And knowledge
>>>> is certainly not wisdom."
>>>> H. Gilbert Welch
>>>>
>>>>
>>>>
>>>>
>>>> On Thu, May 8, 2014 at 5:56 PM, Spencer Graves
>>>> <spencer.graves at structuremonitoring.com> wrote:
>>>>>
>>>>>
>>>>>             "as.character.call" seems not to work as an alias for
>>>>> deparse.
>>>>> Consider the following:
>>>>>
>>>>>
>>>>> xDy <- quote(x$y)
>>>>> class(xDy)
>>>>> "call"
>>>>> as.character.call <- function(x, ...)deparse(x, ...)
>>>>> as.character(xDy)
>>>>> [1] "$" "x" "y"
>>>>> # fails
>>>>>
>>>>> str(xDy)
>>>>> #  language x$y
>>>>> as.character.language <- function(x, ...)"language"
>>>>>
>>>>> as.character(xDy)
>>>>> [1] "$" "x" "y"
>>>>>
>>>>>
>>>>>             Is it feasible to construct a method for "as.character"
>>>>> that
>>>>> works
>>>>> for objects of class "call"?
>>>>>
>>>>>
>>>>>             Thanks,
>>>>>             Spencer
>>>>>
>>>>>
>>>>> #################
>>>>>
>>>>>
>>>>> Thanks for the quick replies from Richard Heiberger, Greg Show & Bert
>>>>> Gunter.
>>>>>
>>>>>
>>>>>         Might it make sense to create as.character.call as an alias for
>>>>> deparse?
>>>>>
>>>>>
>>>>>         A few years ago, I wrote several functions like "predict.fd" as
>>>>> aliases for functions with less memorable names like "eval.fd".  Doing
>>>>> that
>>>>> made the "fda" package easier to use, at least for me ;-)
>>>>>
>>>>>
>>>>>         Thanks again,
>>>>>         Spencer
>>>>>
>>>>>
>>>>> On 5/7/2014 2:39 PM, Bert Gunter wrote:
>>>>>>
>>>>>>
>>>>>> ... and
>>>>>>
>>>>>>> str(quote(x$y))
>>>>>>
>>>>>>
>>>>>>     language x$y
>>>>>>
>>>>>>> as.list(quote(x$y))
>>>>>>
>>>>>>
>>>>>> [[1]]
>>>>>> `$`
>>>>>>
>>>>>> [[2]]
>>>>>> x
>>>>>>
>>>>>> [[3]]
>>>>>> y
>>>>>>
>>>>>> ## may be instructive.
>>>>>>
>>>>>> Cheers,
>>>>>> Bert
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Bert Gunter
>>>>>> Genentech Nonclinical Biostatistics
>>>>>> (650) 467-7374
>>>>>>
>>>>>> "Data is not information. Information is not knowledge. And knowledge
>>>>>> is certainly not wisdom."
>>>>>> H. Gilbert Welch
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, May 7, 2014 at 2:30 PM, Greg Snow <538280 at gmail.com> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> deparse(quote(x$y))
>>>>>>>
>>>>>>>
>>>>>>> [1] "x$y"
>>>>>>>
>>>>>>> It looks like deparse does what you want here.
>>>>>>>
>>>>>>> On Wed, May 7, 2014 at 3:23 PM, Spencer Graves
>>>>>>> <spencer.graves at structuremonitoring.com> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> Hello, All:
>>>>>>>>
>>>>>>>>
>>>>>>>>          Is there a simple utility someplace to convert "quote(x$y)"
>>>>>>>> to
>>>>>>>> "x$y"?
>>>>>>>>
>>>>>>>>
>>>>>>>>          I ask, because as.character(quote(x$y)) is a character
>>>>>>>> vector
>>>>>>>> of
>>>>>>>> length 3 =  "$" "x" "y".  I want to convert this to "x$y" for a
>>>>>>>> diagnostic
>>>>>>>> message.
>>>>>>>>
>>>>>>>>
>>>>>>>>          class(quote(x$y)) = "call", which suggests I could write
>>>>>>>> "as.character.call" to perform this function.  However, before I do,
>>>>>>>> I
>>>>>>>> felt
>>>>>>>> a need to ask for other thoughts on this.
>>>>>>>>
>>>>>>>>
>>>>>>>>          Thanks,
>>>>>>>>          Spencer
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Gregory (Greg) L. Snow Ph.D.
>>>>>>>> 538280 at gmail.com
>>>>>>>>
>>>>>>>> ______________________________________________
>>>>>>>> R-help at r-project.org mailing list
>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>>>>>> PLEASE do read the posting guide
>>>>>>>> http://www.R-project.org/posting-guide.html
>>>>>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>> --
>>> Spencer Graves, PE, PhD
>>> President and Chief Technology Officer
>>> Structure Inspection and Monitoring, Inc.
>>> 751 Emerson Ct.
>>> San José, CA 95126
>>> ph:  408-655-4567
>>> web:  www.structuremonitoring.com
>>>
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>



More information about the R-help mailing list