On Sat, Jun 12, 2010 at 9:22 PM, Worik R <wor...@gmail.com> wrote:
> I am puzzled by the scope rules that apply with sapply.
>
> If I want to modify a vector with sapply I tried...
>
> N <- 10
> vec <- vector(mode="numeric", length=N)
> test <- function(i){
>  vec[i] <- i
> }
> sapply(1:N, test)
> vec
>
> but it not work.
>

If we modify a variable inside a function R makes a local copy of that
variable rather than modifying the original one.  Try this instead.
The first one uses <<- to tell it to search into parent environments
for vec and the second one tells it explicitly which environment to
use.

vec <- rep(0, 10)
test2 <- function(i) vec[i] <<- i
junk <- sapply(1:N, test2)
vec

vec <- rep(0, 10)
test3 <- function(i, env) env$vec[i] <- i
junk <- sapply(1:N, test3, env = environment())
vec

______________________________________________
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