dear Rui,
                 Thanks a lot....

Thanking you,
Yours sincerely,
AKSHAY M KULKARNI
________________________________
From: Rui Barradas <ruipbarra...@sapo.pt>
Sent: Monday, January 9, 2023 9:48 PM
To: akshay kulkarni <akshay...@hotmail.com>; R help Mailing list 
<r-help@r-project.org>
Subject: Re: [R] return value of {....}

�s 14:47 de 09/01/2023, akshay kulkarni escreveu:
> Dear members,
>                               I have the following code:
>
>> TB <- {x <- 3;y <- 5}
>> TB
> [1] 5
>
> It is consistent with the documentation: For {, the result of the last 
> expression evaluated. This has the visibility of the last evaluation.
>
> But both x AND y are created, but the "return value" is y. How can this be 
> advantageous for solving practical problems? Specifically, consider the 
> following code:
>
> F <- function(X) {  expr; expr2; { expr5; expr7}; expr8;expr10}
>
> Both expr5 and expr7 are created, and are accessible by the code outside of 
> the nested braces right? But the "return value" of the nested braces is 
> expr7. So doesn't this mean that only expr7 should be accessible? Please help 
> me entangle this (of course the return value of F is expr10, and all the 
> other objects created by the preceding expressions are deleted. But expr5 is 
> not, after the control passes outside of the nested braces!)
>
> Thanking you,
> Yours sincerely,
> AKSHAY M KULKARNI
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@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.

Hello,

Everything happens as you have described it, expr5 is accessible outside
{}. Whether it is advantageous to solve pratical problems is another
thing. The way f() is called creates variable `input` and this can be
seen in many places of the R sources. Personally, I find it harder to
read and prefer to break that one-liner into two instructions.

The code below shows a seldom pratical feature, if ever, put to work.


f <- function(X) {
   x <- X; y <- x*2
   u <- {
     z <- y     # expr5 creates a variable by assigning it a value
     z*pi       # expr7's value is assigned to u
   }
   v <- u + z   # expr5's value is accessible
   10 * v
}

# the call also creates input
f(input <- 1)
#> [1] 82.83185
.Last.value / 10
#> [1] 0.1
.Last.value - input*2
#> [1] -1
.Last.value / pi
#> [1] 0.3183099
.Last.value / 2
#> [1] 0.5
.Last.value == input
#> [1] TRUE


Hoep this helps,

Rui Barradas


        [[alternative HTML version deleted]]

______________________________________________
R-help@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.

Reply via email to