Warning on assignment.
It's the other way around. You are trying to replace 10 elements (x[i]) with 20 elements (y). R makes a "best guess" as to how you want to do that. 10 is not a multiple of 20. If you were trying to replace 20 elements with 10, then R would recycle them because 20 _is_ a multiple of 10. The safest course is always to make sure you are replacing with equal numbers. Sarah
On Thu, Jan 15, 2009 at 1:20 PM, <rkevinburton at charter.net> wrote:
This was just an illustration. It is the warning message that I don't understand. The warning says "number of items to replace is not a multiple of replacement length". The way I look at it 10 is a multiple of 20. Kevin ---- Sarah Goslee <sarah.goslee at gmail.com> wrote:
The lengths are different, particularly the length of subsetted x[i]
x <- 1:20 i <- x %% 2 > 0 y <- rep(1,20)
length(x)
[1] 20
length(i)
[1] 20
length(x[i])
[1] 10
length(y)
[1] 20 You happened to be lucky and got what you wanted, but a more reliable approach is:
x[i] <- y[i]
Sarah On Thu, Jan 15, 2009 at 1:08 PM, <rkevinburton at charter.net> wrote:
I have a question on whether a warning message is valid or if I just don't understand the process. Let me illustrate via some R code: x <- 1:20 i <- x %% 2 > 0 y <- rep(1,20) x[i] <- y Warning message: In x[i] <- y : number of items to replace is not a multiple of replacement length But it still does what I would expect for the assignment:
x
[1] 1 2 1 4 1 6 1 8 1 10 1 12 1 14 1 16 1 18 1 20
What don't I understand? Thank you. Kevin
Sarah Goslee http://www.functionaldiversity.org