[R] Calling a procedure
Steven Yen
@tyen @end|ng |rom ntu@edu@tw
Mon Sep 21 04:32:50 CEST 2020
Thanks to all for educating me about procedures and argument. Those were
very helpful!!
On 2020/9/21 上午 12:26, Bert Gunter wrote:
> Argument passing is fundamental, even more so when you write your own
> functions, which any half-serious R user will want to do. What has
> heretofore been discussed in this thread is not the whole story (e.g.
> there are ... arguments and functions as binary operators, among other
> things). See section 10 of the "Introduction to R" document that
> ships with R or any other decent R tutorial of your choice. The R
> language definition is the definitive reference (section 4 especially
> for this).
>
> All imo of course.
>
> Bert Gunter
>
> "The trouble with having an open mind is that people keep coming along
> and sticking things into it."
> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>
>
> On Sun, Sep 20, 2020 at 8:57 AM Mark Leeds <markleeds2 using gmail.com
> <mailto:markleeds2 using gmail.com>> wrote:
>
> Hi Steven: Rui's detailed explanation was great. The way I think
> of it is,
> if you don't
> want to send the variables in with the same order as the formal
> arguments, then you
> better name them as you send them in.
>
>
>
>
>
> On Sun, Sep 20, 2020 at 7:23 AM Steven Yen <styen using ntu.edu.tw
> <mailto:styen using ntu.edu.tw>> wrote:
>
> > Thanks. So, to be safe, always a good idea to give the argument,
> e.g.,
> > q=1.96, log.p=FALSE, skipping mean=0 and sd=1 if not needed. Thanks.
> >
> > pnorm(q=1.96, log.p = FALSE)
> >
> > On 2020/9/20 下午 06:36, Rui Barradas wrote:
> > > Hello,
> > >
> > > You are making a confusion between
> > >
> > > 1. the formal argument log.p
> > > 2. the variable log.p
> > >
> > > In the function body, log.p is a variable that exists in the
> > > function's frame, not the formal argument of pnorm.
> > > The first and the 3rd calls that follow output the same value.
> > >
> > > try(x = 1.2, log.p = TRUE)$a
> > > try(x = 1.2, log.p = TRUE)$b
> > > try(x = 1.2, 1)$a
> > >
> > > This is because in the function
> > >
> > > a<-pnorm(x,log.p) # first call
> > >
> > > passes log.p as the *second* argument, not as a value for pnorm's
> > > formal argument log.p. Unless when named, the arguments are
> passed in
> > > the order they appear in the function's definition:
> > >
> > > pnorm(q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
> > >
> > > and that becomes
> > >
> > > a<-pnorm(x,TRUE) # first call
> > > a<-pnorm(x,1) # first call, coerced to numeric.
> > >
> > >
> > > Let me give another example. In the function that follows the
> default
> > > is z = FALSE.
> > >
> > > In the first call the name z is not the name of the argument,
> it's the
> > > name of a variable that exists in the .GlobalEnv.
> > >
> > > In the second call, z = z assign the formal argument z the
> value of
> > > the variable z.
> > >
> > >
> > > f <- function(x, y = 0, z = FALSE){
> > > a <- x
> > > b <- y
> > > d <- z
> > > list(a = a, b = b, d = d)
> > > }
> > > z <- 2
> > > f(1, z)
> > > f(1, z = z)
> > >
> > >
> > > Hope this helps,
> > >
> > > Rui Barradas
> > >
> > > Às 11:11 de 20/09/20, Steven Yen escreveu:
> > >> Can someone tell me a proper call to a procedure, in this case,
> > >> pnorm. In what follows, I had expected a = b, but they are
> not equal.
> > >> What are wrong with first call and second call? Thank you!
> > >>
> > >> try<-function(x,log.p=FALSE){
> > >> a<-pnorm(x,log.p) # first call
> > >> b<-pnorm(x,log.p=log.p) # second call
> > >> list(a=a,b=b)
> > >> }
> > >>
> > >> try(x=1.2,log.p=TRUE)$a
> > >> try(x=1.2,log.p=TRUE)$b
> > >>
> > >> ______________________________________________
> > >> R-help using r-project.org <mailto:R-help using r-project.org> mailing
> list -- To UNSUBSCRIBE and more, see
> > >> 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.
> >
> > [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help using r-project.org <mailto:R-help using r-project.org> mailing list
> -- To UNSUBSCRIBE and more, see
> > 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.
> >
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using r-project.org <mailto:R-help using r-project.org> mailing list --
> To UNSUBSCRIBE and more, see
> 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.
>
[[alternative HTML version deleted]]
More information about the R-help
mailing list