Hello,

Start by (re-)reading An Introduction to R, file R-intro.pdf in your doc directory. Chapter 10.

You're just computing, not returning the result of that computation. Nor anything else, ADD() does not return a value. (See the example in R-intro, section 10.1) And you need to assign the return value to change the value of 'z' _outside_ the function. R passes arguments by value, what happens inside functions stays inside functions. (R-intro, section 10.5, first sentence.)

# Right way
z <- 1
ADD <- function(x){
    x <- x + 1
    x
}
ADD(z)  # returns 2
z  # still 1
z2 <- ADD(z)
z2  # equals 2

Hope this helps,

Rui Barradas
Em 07-09-2012 19:00, wwreith escreveu:
I am just starting to experiment with writing a function and have run into
what seems like a limitation or more likely a lack of understanding on my
part.

Very Simple Example:  I want to define a function that does 1+1=2.

z<-1
ADD<-function(x)
{
x<-x+1
}
ADD(z)
z
  output for z is 1 not the expected 2.

Now if I were to do print(x+1) instead of x<-x+1 it does return 2, so the
function seems ok with x+1, but not ok with x<-. Is there a way to define a
variable inside a function or am I violating some rule that I don't know
about?

Thanks for the help!

Will



--
View this message in context: 
http://r.789695.n4.nabble.com/Trying-to-learn-how-to-write-a-function-can-t-define-a-variable-tp4642528.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
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.

Reply via email to