[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,
>
> 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 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