> 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