[R] Distinguishing variables from functions with the same name
Wacek Kusnierczyk
Waclaw.Marcin.Kusnierczyk at idi.ntnu.no
Fri Feb 13 18:52:46 CET 2009
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.
More information about the R-help
mailing list