[R] Calling a procedure

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Sun Sep 20 12:36:01 CEST 2020


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.



More information about the R-help mailing list