On 4/8/2008 7:42 AM, Gabor Grothendieck wrote: > I think what he is referring to is that findGlobals lists mean under > variables rather than functions when you do this with his f: > >> findGlobals(f, FALSE) > $functions > [1] "{" "apply" > > $variables > [1] "mean"
Yes, I understood that, and I think it's reasonable behaviour. findGlobals analyzes the syntax, not the semantics. Duncan Murdoch > > On Tue, Apr 8, 2008 at 7:14 AM, Duncan Murdoch <[EMAIL PROTECTED]> wrote: >> Christophe Genolini wrote: >> >>> f <- function(x){apply(x,2,mean)} >> >>> findGlobals(f) >> >>> >> >> mean is a global variable, so findGlobals gets it right. >> >> >> > That sound strange to me: a "variable" is something that vary... mean >> > does not vary. maen will ge an argument that is a line of x and will >> > make some calculous on it, that is the comportement of a function. >> > Of course, mean is an argument of an other function, but I do not think >> > this is a reason good enouth to say that mean is a variable. >> > >> >> findGlobals doesn't try to tell what mean is; it's just reporting on how >> you've used it. Your usage means that the interpreter will treat it as >> a variable, getting a copy of its value and passing it as an argument to >> apply. (That's an oversimplification, of course: it's very unlikely >> that an actual copy will be made, but it will act as if one was made.) >> >> > Furthemore, I use findGlobals to detect some typo. In >> > >> > f <- function(myObject){return(mObject^2)} >> > >> > findGlobals will detect that mObject is a global so I know there is a >> > typo somewhere. >> > Considering mean as a globals do not let us use findGlobals this way. >> > >> > >> >> You can still use it to detect that kind of typo, but you need a second >> step where you check whether the globals exist in the environment of the >> function or not. That test won't be perfect either: it will miss cases >> where you meant to type a local variable, but by mistake typed the name >> of some global. Most uses of mean as a variable would fall into that >> category; unfortunately (?) apply means some of them are legitimate. >> >> I think the best you'll ever be able to do is to get some suggestions of >> errors, with both false positives and false negatives. If there were >> cases where some usage was definitely an error, the parser would >> probably catch it. >> >> Duncan Murdoch >> >> >> >> > Christophe >> > >> > ______________________________________________ >> > R-help@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. >> > >> >> ______________________________________________ >> R-help@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. >> > > ______________________________________________ > R-help@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. ______________________________________________ R-help@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.