On Fri, 2004-04-09 at 12:03, Rajarshi Guha wrote:
Hi, I was playing with some code and came upon this situation.
x <- c(1, rep(0,9)) x
[1] 1 0 0 0 0 0 0 0 0 0
idx <- 1:10 x[idx] <- x[idx] + 1 x
[1] 2 1 1 1 1 1 1 1 1 1
This is expected. But if I do:
x <- c(1, rep(0,9)) x
[1] 1 0 0 0 0 0 0 0 0 0
idx <- rep(0,10) idx
[1] 0 0 0 0 0 0 0 0 0 0
x[idx] <- x[idx] +1 x
[1] 1 0 0 0 0 0 0 0 0 0
Aah, I realize that the second code snippet is not supposed to work. What I meant was:
x <- c(1, rep(0,9)) x
[1] 1 0 0 0 0 0 0 0 0 0
idx <- rep(1,10) idx
[1] 1 1 1 1 1 1 1 1 1 1
x[idx] <- x[idx] + 1
[1] 2 0 0 0 0 0 0 0 0 0
I expected that x would be
[1] 11 0 0 0 0 0 0 0 0 0
Or am I thinking about it wrong?
Yes, you are wrong: You are indexing 10 times the first value. Writing 10 times the same value 10 times into the same location does not sum it up.
Consider
x[idx] <- 1:10
Then you are writing 1 into x[1], 2 into x[1], 3 into x[1], ... and finally 10 into x[1], hence at the end x[1] is 10.
Uwe Ligges
Thanks,
------------------------------------------------------------------- Rajarshi Guha <[EMAIL PROTECTED]> <http://jijo.cjb.net> GPG Fingerprint: 0CCA 8EE2 2EEB 25E2 AB04 06F7 1BB9 E634 9B87 56EE ------------------------------------------------------------------- Disembowelling takes guts.
______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
