Deepayan Sarkar
2006-Dec-22 06:07 UTC
[Rd] apropos changes in r-devel: intended feature or bug?
The old apropos started with:
if (!is.character(what))
what <- as.character(substitute(what))
The new one has:
if (character.only)
stopifnot(is.character(what))
else what <- as.character(substitute(what))
i.e., the check for is.character(what) is missing. This has the effect
that 'what' can no longer be a character string generated by a
function call unless 'character.only = TRUE'. I don't think this was
intended; the change makes previously valid use invalid and I can't
think of a situation where it is useful.
-Deepayan
> apropos(paste("^", "lm", sep = ""))
[1] "paste"
There were 12 warnings (use warnings() to see them)> warnings()
Warning messages:
1: the condition has length > 1 and only the first element will be
used in: if (is.na(pattern)) { ...
2: the condition has length > 1 and only the first element will be
used in: if (is.na(pattern)) { ...
3: the condition has length > 1 and only the first element will be
used in: if (is.na(pattern)) { ...
...
> sessionInfo()
R version 2.5.0 Under development (unstable) (2006-12-21 r40280)
powerpc-unknown-linux-gnu
locale:
LC_CTYPE=bn_IN.UTF-8;[etc etc]
attached base packages:
[1] "stats" "graphics" "grDevices"
"utils" "datasets" "methods"
[7] "base"
Martin Maechler
2006-Dec-22 08:14 UTC
[Rd] apropos changes in r-devel: intended feature or bug?
>>>>> "DeepS" == Deepayan Sarkar <deepayan.sarkar at gmail.com> >>>>> on Thu, 21 Dec 2006 22:07:27 -0800 writes:DeepS> The old apropos started with: if DeepS> (!is.character(what)) what <- DeepS> as.character(substitute(what)) DeepS> The new one has: DeepS> if (character.only) stopifnot(is.character(what)) DeepS> else what <- as.character(substitute(what)) DeepS> i.e., the check for is.character(what) is DeepS> missing. This has the effect that 'what' can no DeepS> longer be a character string generated by a function DeepS> call unless 'character.only = TRUE'. I don't think DeepS> this was intended; the change makes previously valid DeepS> use invalid and I can't think of a situation where it DeepS> is useful. [ Did you read the corresponding NEWS entry? ] It now parallelizes the use in library() , require() etc, and in particular does what the documentation says it does! The old behavior was much less consistent and not according to documentation: apropos(lm) was equivalent to apropos("lm") but apropos(fit) gave an error. Martin DeepS> -Deepayan