Unless you do something special within a function, only the value(s) returned are available to the caller. That is the essence of functional-type programming languages. You need to read up on (function) environments in R . You can search on this. ?function and its links also contain useful information, but it may too terse to be explicable to you. There are of course many available references on the internet. I believe your mental model for how R works is flawed, and you have some homework to do to correct it. I may be wrong, naturally, but you can judge by looking at some tutorials. -- Bert On Mon, Jan 9, 2023 at 6:47 AM akshay kulkarni <akshay_e4 at hotmail.com> wrote:> 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 at 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]]
dear Bert, Thanks a lot... Thanking you, Yours sincerely, AKSHAY M KULKARNI ________________________________ From: Bert Gunter <bgunter.4567 at gmail.com> Sent: Monday, January 9, 2023 9:59 PM To: akshay kulkarni <akshay_e4 at hotmail.com> Cc: R help Mailing list <r-help at r-project.org> Subject: Re: [R] return value of {....} Unless you do something special within a function, only the value(s) returned are available to the caller. That is the essence of functional-type programming languages. You need to read up on (function) environments in R . You can search on this. ?function and its links also contain useful information, but it may too terse to be explicable to you. There are of course many available references on the internet. I believe your mental model for how R works is flawed, and you have some homework to do to correct it. I may be wrong, naturally, but you can judge by looking at some tutorials. -- Bert On Mon, Jan 9, 2023 at 6:47 AM akshay kulkarni <akshay_e4 at hotmail.com<mailto:akshay_e4 at hotmail.com>> wrote: 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 at r-project.org<mailto:R-help at 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]]
Perhaps the following may be of use to you. Consider:> f <- function(){ x <- 3; function(y) x+y} > x <- 5##What does this give?> f()## Why? ## How about this?>f()(10)## Why? ## If you remove "x <- 3" from the above, what will you get when you repeat the exercise? -- Bert On Mon, Jan 9, 2023 at 8:29 AM Bert Gunter <bgunter.4567 at gmail.com> wrote:> Unless you do something special within a function, only the value(s) > returned are available to the caller. That is the essence of > functional-type programming languages. > > You need to read up on (function) environments in R . You can search on > this. ?function and its links also contain useful information, but it may > too terse to be explicable to you. There are of course many available > references on the internet. > > I believe your mental model for how R works is flawed, and you have some > homework to do to correct it. I may be wrong, naturally, but you can judge > by looking at some tutorials. > > -- Bert > > On Mon, Jan 9, 2023 at 6:47 AM akshay kulkarni <akshay_e4 at hotmail.com> > wrote: > >> 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 at 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]]