[Rd] A possible improvement to apropos
Martin Maechler
maechler at stat.math.ethz.ch
Thu Dec 14 09:45:30 CET 2006
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
>> }
More information about the R-devel
mailing list