Re: [Rd] proposed changes to RSiteSearch

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Thu, 04 Jun 2009 13:48:28 -0400

On Thu, Jun 4, 2009 at 1:38 PM, spencerg <spencer.graves_at_prodsyse.com> wrote:

> Gabor Grothendieck wrote:

>>
>> On Thu, Jun 4, 2009 at 12:13 PM, Duncan Murdoch <murdoch@stats.uwo.ca>
>> wrote:
>>
>>>
>>> Gabor Grothendieck wrote:
>>>
>>>>
>>>> On Thu, Jun 4, 2009 at 1:58 AM, Duncan Murdoch <murdoch_at_stats.uwo.ca>
>>>> wrote:
>>>>
>>>>
>>>>>
>>>>> spencerg wrote:
>>>>>
>>>>>
>>>>>>
>>>>>> Hello All:
>>>>>>
>>>>>>    What do you think of adding a function "RSiteSeach" to the package
>>>>>> of
>>>>>> that name, masking the "RSiteSearch" function in "utils", trapping any
>>>>>> call
>>>>>> RSiteSearch('searchstring', 'function') to the current
>>>>>> RSiteSearch.function
>>>>>> and passing all others to "utils:::RSiteSearch"?  This was suggested
>>>>>> by
>>>>>> a
>>>>>> referee to a manuscript on this new capability submitted to "R
>>>>>> Journal".
>>>>>>  The current version of this manuscript is available via
>>>>>> "system.file('doc',
>>>>>> 'RSiteSearch.pdf', package='RSiteSearch')" if you have the
>>>>>> "RSiteSearch"
>>>>>> package installed.
>>>>>>
>>>>>>
>>>>>
>>>>> I suppose this depends on your long term plans for the function and
>>>>> package.
>>>>>  If you think it should eventually replace the utils function, then it
>>>>> makes
>>>>> sense to use the same name:  users won't get used to a new name in the
>>>>> meantime.  But if you think it will diverge from that function, then
>>>>> you
>>>>> might as well pick a separate name now.
>>>>>
>>>>> I disagree with Gabor about this being heavy handed, at least while it
>>>>> is
>>>>> the only significant export in the package.  If people don't want it,
>>>>> don't
>>>>> attach the package.
>>>>>
>>>>>
>>>>>
>>>>
>>>> The last sentence only gives you a choice of clobbering the existing
>>>> function or not using it and that is not very nice.   What is wanted is
>>>> both to be able to use it and allow it to coexist in a nice way.
>>>>
>>>>
>>>
>>> It is essentially a rename of the existing one to utils::RSiteSearch.  I
>>> would only suggest this if RSiteSearch::RSiteSearch expanded on its
>>> capabilities (which I think was Spencer's proposal), rather than
>>> replacing

>>> them with something different.
>>>
>>>
>>>>
>>>> How about R changing its RSiteSearch to be an S3 generic with the
>>>> main functionality being placed into RSiteSearch.default?   Then
>>>> RSiteSearch.function can become RsiteSearch.character and
>>>>  - RSiteSearch will give the new functionality when the package is
>>>> loaded and the old functionality if not.
>>>> - RSiteSearch.character can be used in place of RSiteSearch.function
>>>> to force only the new functionality (or an error if not present)
>>>> - RSiteSearch.default will give the old functionality whether or not the
>>>> package is loaded
>>>>
>>>> (If there is a NAMESPACE then Its assumed here that both methods are
>>>> exported.)
>>>>
>>>>
>>>
>>> How is that an improvement?  Just replace your (RSiteSearch,
>>> RSiteSearch.character, RSiteSearch.default) with (RSiteSearch,
>>> RSiteSearch::RSiteSearch, utils::RSiteSearch) in my proposal and you get
>>> the
>>> same behaviour.  The point isn't that Spencer has invented a way for
>>> RSiteSearch to handle character vectors, it already knows that.  The
>>> point
>>> is that he has enhanced it.  Or maybe he has written something similar
>>> but
>>> different, in which case he should pick a new name.
>>> Duncan Murdoch
>>>
>>>
>>
>> He simply renames it RSiteSearch.character (and possibly some other
>> changes depending on arguments). Then if the core cooperates
>> by making RSiteSearch a generic with a default method then everything
>> works as one would expect based on an understanding of S3.
>>
>> No conflicts in names are involved.
>>
>>
>
> To clarify:  RSiteSearch.function{RSiteSearch} accesses Johathan Baron's
> RSiteSearch data base for functions only, returning the result as a
> data.frame, sorts it to put the most frequently cited package first and then
> help page within package.
>     Spencer

Consider this:

> f <- function(x) UseMethod("f")
> f.character <- function(x) { if (nchar(x) > 1) NextMethod() else x }
> f.default <- function(x) nchar(x)
> f("xx")

[1] 2
> f("x")
[1] "x"

In this case f takes a single character string argument and passes it to f.character.

f.character can handle a single character (it just returns it) but if x consists of a string of multiple characters it hands it off to f.default (which returns the number of characters).



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Thu 04 Jun 2009 - 17:55:23 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 05 Jun 2009 - 05:36:14 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive