> Most of that stuff is already in codetools, at least when it is checking 
> functions
> with checkUsage().  E.g., arguments of ~ are not checked.  The  expr argument
> to with() will not be checked if you add  skipWith=FALSE to the call to 
> checkUsage.
>
>  > library(codetools)
>
>  > checkUsage(function(dataFrame) with(dataFrame, {Num/Den ; Resp ~ Pred}))
>  <anonymous>: no visible binding for global variable 'Num' (:1)
>  <anonymous>: no visible binding for global variable 'Den' (:1)
>
>  > checkUsage(function(dataFrame) with(dataFrame, {Num/Den ; Resp ~ Pred}), 
> skipWith=TRUE)
>
>  > checkUsage(function(dataFrame) with(DataFrame, {Num/Den ; Resp ~ Pred}), 
> skipWith=TRUE)
>  <anonymous>: no visible binding for global variable 'DataFrame'
>
> The only part that I don't see is the mechanism to add code-walker functions 
> to
> the environment in codetools that has the standard list of them for functions 
> with
> nonstandard evaluation:
>  > objects(codetools:::collectUsageHandlers, all=TRUE)
>   [1] "$"             "$<-"           ".Internal"
>   [4] "::"            ":::"           "@"
>   [7] "@<-"           "{"             "~"
>  [10] "<-"            "<<-"           "="
>  [13] "assign"        "binomial"      "bquote"
>  [16] "data"          "detach"        "expression"
>  [19] "for"           "function"      "Gamma"
>  [22] "gaussian"      "if"            "library"
>  [25] "local"         "poisson"       "quasi"
>  [28] "quasibinomial" "quasipoisson"  "quote"
>  [31] "Quote"         "require"       "substitute"
>  [34] "with"

It seems like we really need a standard way to add metadata to functions:

attr(with, "special_args") <- "expr"
attr(lm, "special_args") <- c("formula", "weights", "subset")

This would be useful because it could automatically contribute to the
documentation.

Similarly,

attr(my.new.method, "s3method") <- c("my.new", "method")

could be useful.

Hadley


-- 
Assistant Professor / Dobelman Family Junior Chair
Department of Statistics / Rice University
http://had.co.nz/

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to