[R] Warning on assignment.
Sarah Goslee
sarah.goslee at gmail.com
Thu Jan 15 19:25:22 CET 2009
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
More information about the R-help
mailing list