Skip to content

Warning on assignment.

5 messages · rkevinburton at charter.net, Sarah Goslee, Peter Dalgaard

#
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:
[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
#
The lengths are different, particularly the length of subsetted x[i]
[1] 20
[1] 20
[1] 10
[1] 20

You happened to be lucky and got what you wanted, but a more reliable
approach is:
Sarah
On Thu, Jan 15, 2009 at 1:08 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:
#
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:

  
    
#
rkevinburton at charter.net wrote:
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.

Um, with a multiplier of 0.5 ?

You're trying to put 20 things in 10 boxes. R will allow 10 things in 20
boxes (by recycling) without complaining.