# [R] Calling a procedure

Steven Yen @tyen @end|ng |rom ntu@edu@tw
Sun Sep 20 13:23:06 CEST 2020

```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,
>
>
> À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 mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help