[Rd] A possible improvement to apropos

stefano iacus jago at mclink.it
Thu Dec 14 12:56:49 CET 2006


I would second Seth here, because the search is case insensitive but  
results are not.
This is not strictly related to the language.
For example, on my shell, the last entries of

apropos system

are

xload(1)                 - system load average display for X
xlogo(1)                 - X Window System logo
xman(1)                  - Manual page display program for the X  
Window System


which I find a reasonable result.

stefano

On 14/dic/06, at 17:45, Martin Maechler wrote:

> Hi Seth,
>
>>>>>> "Seth" == Seth Falcon <sfalcon at fhcrc.org>
>>>>>>     on Wed, 13 Dec 2006 16:38:02 -0800 writes:
>
>     Seth> Hello all, I've had the following apropos alternative
>     Seth> in my ~/.Rprofile for some time, and have found it
>     Seth> more useful than the current version.  Basically, my
>     Seth> version ignores case when searching.
>
>     Seth> If others find this useful, perhaps apropos could be
>     Seth> suitably patched (and I'd be willing to create such a
>     Seth> patch).
>
> Could you live with typing 'i=T' (i.e.  ignore.case=TRUE)?
>
> In principle, I'd like to keep the default  as ignore.case=FALSE,
> since we'd really should teach the users that R
> *is* case sensitive.
> Ignoring case is the exception in the S/R/C world, not the rule
>
> I have a patch ready which implements your suggestion
> (but not quite with the code below), but as said, not as
> default.
>
> Martin
>
>     Seth> + seth
>
>     Seth> Here is my version of apropos:
>
>>> APROPOS <- function (what, where = FALSE, mode = "any")
>>> {
>>>     if (!is.character(what))
>>>       stop("argument ", sQuote("what"), " must be a character  
>>> vector")
>>>     x <- character(0)
>>>     check.mode <- mode != "any"
>>>     for (i in seq(search())) {
>>>         contents <- ls(pos = i, all.names = TRUE)
>>>         found <- grep(what, contents, ignore.case = TRUE, value =  
>>> TRUE)
>>>         if (length(found)) {
>>>             if (check.mode) {
>>>                 found <- found[sapply(found, function(x) {
>>>                     exists(x, where = i, mode = mode, inherits =  
>>> FALSE)
>>>                 })]
>>>             }
>>>             numFound <- length(found)
>>>             x <- c(x, if (where)
>>>                    structure(found, names = rep.int(i, numFound))  
>>> else found)
>>>         }
>>>     }
>>>     x
>>> }
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



More information about the R-devel mailing list