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.