Distinguishing variables from functions with the same name
Berwin A Turlach wrote:
G'day Stavros, On Fri, 13 Feb 2009 11:11:28 -0500 Stavros Macrakis <macrakis at alum.mit.edu> wrote:
On Fri, Feb 13, 2009 at 10:47 AM, Gabor Grothendieck
<ggrothendieck at gmail.com> wrote:
See ?get and try:
Interesting. I hadn't paid attention to the 'mode' argument before.
Where would it be advisable to use anything but mode='any' or
mode='function'?
I guess the answer to this question is more often than not in the source. :)
On my machine:
berwin at berwin-nus1:/opt/src/R-devel-src/src/library$ find . -name "*.R" -type f | xargs grep "get(" \
| grep mode | grep -v function | grep -v all
hmm, looks like you can do it with just one call to grep: grep -R -P --include=*.R 'get\(.*mode\s*=\s*"(?!function|any)' . # ./src/library/utils/R/Sweave.R: syntax <- get(syntax, mode="list") # ./src/library/utils/R/Sweave.R: syntax <- get(sname, mode = "list") # ./src/library/utils/R/Sweave.R: s <- get(sname, mode="list") # ./src/library/tools/R/QC.R: al <- get(al, envir = code_env, mode = "list") # ./src/library/tools/R/QC.R: al <- get(al, envir = ns_env, mode = "list") # ./src/library/tools/R/QC.R: al <- get(al, envir = data_env, mode = "list") (you'll need grep compiled with --enable-perl-regexpr for this) note this fancy comment in ?get: " 'mode' here is a mixture of the meanings of 'typeof' and 'mode'" vQ
./tools/R/QC.R: al <- get(al, envir = code_env, mode = "list") ./tools/R/QC.R: al <- get(al, envir = ns_env, mode = "list") ./tools/R/QC.R: al <- get(al, envir = data_env, mode = "list") ./utils/R/Sweave.R: syntax <- get(syntax, mode="list") ./utils/R/Sweave.R: syntax <- get(sname, mode = "list") ./utils/R/Sweave.R: s <- get(sname, mode="list") ./utils/R/str.R: str(get(nam, envir = E, mode = M), ./stats/R/model.tables.R: tables[[i]] <- tapply(data, model[model.cols[[i]]], get(fun)) ./stats/R/models.R: ## get(contr.funs[1 + isOF[nn]])(nlevels(data[[nn]])) ./base/R/get.R: .Internal(get(x, envir, mode, inherits)) ./base/R/get.R: .Internal(mget(x, envir, mode, ifnotfound, inherits)) ./base/R/match.fun.R: FUN <- get(as.character(FUN), mode = "any", envir = envir) The first few hits seem to indicate examples where it is necessary to look specifically for a list. Cheers, Berwin
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.