Yes, based on that it seems understandable although initially suprising. On Tue, Apr 8, 2008 at 12:56 PM, Duncan Murdoch <[EMAIL PROTECTED]> wrote: > 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.