I see you've already been told about "<<-". The reason I (and presumably others?) stay away from that construct is that your function then has side effects that a user (even yourself) may not anticipate or want, namely possibly overwriting a previous variable in your global environment. The help for ?<<- says,
"The operators '<<-' and '->>' cause a search to made through the environment for an existing definition of the variable being assigned. If such a variable is found (and its binding is not locked) then its value is redefined, otherwise assignment takes place in the global environment." So this is not even guaranteed to assign in the Global Environment!! To follow-up on my previous email, you usually assign the results of your function call to a variable if you want to use them further. For example, ## return both x and y testfunc2 <- function(x) { y <- 10 list(x, y) } my.var <- testfunc2(4) another.function(my.var) > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] > On Behalf Of Erik Iverson > Sent: Monday, September 21, 2009 10:43 AM > To: David Young; r-help@r-project.org > Subject: Re: [R] Basic function output/scope question > > Hello, > > > > > testfunc<-function(x) > > { y<-10 > > print(y) > > print(x) > > } > > > > testfunc(4) > > > > The variables x and y are accessible during execution of the function > > "testfunc" but not afterwards. > > In R, expressions return values. When you define a function, ?function > says that, "If the end of a function is reached without calling 'return', > the value of the last evaluated expression is returned." > > So you are correct, 'x' and 'y' are local variables, and by all accounts > they should be. If you want their values accessible, simply return them. > > ## return just y > testfunc2 <- function(x) { > y <- 10 > y > } > > ## return both x and y > testfunc2 <- function(x) { > y <- 10 > list(x, y) > } > > There are ways to make x and y global from within a function, but in > general that is not the R way to do things! > > Hope that helps, > Erik Iverson > > ______________________________________________ > R-help@r-project.org mailing list > 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. ______________________________________________ R-help@r-project.org mailing list 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.