[R] function doesn't change the variable in the right way
Rui Barradas
ruipbarradas at sapo.pt
Fri Mar 7 15:31:16 CET 2014
Hello,
Inline.
Em 07-03-2014 11:17, David Croll escreveu:
>
> Dear R users and friends,
>
>
> I would like to ask you about the weird behaviour of a function I just
> wrote. This little function should take a vector, find NAs and
> substitute them for the mean of the vector, and return the normalized
> value of that vector.
>
> I've tried both <- and <<- for changing the variables.
>
> That's what I do:
>
> # just a vector:
> b <- c(1,1,1,NA,3,2)
>
> # my function:
> normalize <- function(x) {
>
> # copy x into new vector
> xn <- x
>
> # index of NAs
> nas <- which(is.na(xn) ==TRUE)
> m <- mean(xn, na.rm=TRUE)
>
> # insert mean for NAs
> xn[nas] <- m
>
> # normalize
> return((xn - mean(xn))/sd(xn))
>
> }
>
> # run...
> normalize(b)
>
> # here's what I get:
> # [1] -0.75 -0.75 -0.75 0.00 1.75 0.50
>
>
> The 4th value should be 1.6, but is 0.
No it shouldn't. The value of the 4th element should be 0. It is equal
to mean(xn, na.rm = TRUE) - mean(new xn) and this is zero.
Hope this helps,
Rui Barradas
>
>
> I believe the answer to my problem is pretty obvious, but I can't see it...
>
>
> Best regards,
>
>
> David
>
> ______________________________________________
> R-help at 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.
More information about the R-help
mailing list