dear Rui,
Thanks a lot....
Thanking you,
Yours sincerely,
AKSHAY M KULKARNI
________________________________
From: Rui Barradas <[email protected]>
Sent: Monday, January 9, 2023 9:48 PM
To: akshay kulkarni <[email protected]>; R help Mailing list
<[email protected]>
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]]
>
> ______________________________________________
> [email protected] 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]]
______________________________________________
[email protected] 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.