From hpages at fhcrc.org  Fri Oct 24 10:58:44 2014
From: hpages at fhcrc.org (=?windows-1252?Q?Herv=E9_Pag=E8s?=)
Date: Fri, 24 Oct 2014 01:58:44 -0700
Subject: [Rd] No error when assigning values to an "empty"
	vector/matrix/array
In-Reply-To: <CAFDcVCQWWDvfSmiapMWBJ75WmMzyAMYsndmJaJp1r=-uzG7yXQ@mail.gmail.com>
References: <CAFDcVCQWWDvfSmiapMWBJ75WmMzyAMYsndmJaJp1r=-uzG7yXQ@mail.gmail.com>
Message-ID: <544A14C4.6040608@fhcrc.org>

Hi Henrik,

On 10/23/2014 08:10 PM, Henrik Bengtsson wrote:
> Assigning one or more values to a vector/matrix/array x for which
> length(x) == 0 gives no error, e.g.
>
>> x <- integer(0)
>> x[] <- 1:2
>
>> x <- matrix(nrow=0, ncol=1)
>> x[] <- 1:2
>> x[,1] <- 1:2
>
>> x <- array(dim=c(0,1,1))
>> x[] <- 1:2
>> x[,1,1] <- 1:2
>
> whereas
>
>> x <- integer(1)
>> x[] <- 1:2
> Warning message:
> In x[] <- 1:2 :
>    number of items to replace is not a multiple of replacement length
>> x <- matrix(nrow=1, ncol=1)
>> x[] <- 1:2
> Warning message:
> In x[] <- 1:2 :
>    number of items to replace is not a multiple of replacement length
>> x[,1] <- 1:2
> Error in x[, 1] <- 1:2 :
>    number of items to replace is not a multiple of replacement length
>> x <- array(dim=c(1,1,1))
>> x[] <- 1:2
> Warning message:
> In x[] <- 1:2 :
>    number of items to replace is not a multiple of replacement length
>> x[,1,1] <- 1:2
> Error in x[, 1, 1] <- 1:2 :
>    number of items to replace is not a multiple of replacement length
>
> Is this intended by design or is it a bug that should be reported?

Since [<- supports truncating of the right value, why an exception
should be made when the left vector has length 0?

Also note that these warnings or errors are complaining that the number
of items to replace (left length) is not a multiple of replacement
length (right length). This suggests that when the left length is a
multiple of the right length, everything is fine.
And this is actually the case when the left length is 0. Because
0 is a multiple of anything. So in that case, the right value is
truncated to length 0 and no warning is issued. Makes sense to me.

Cheers,
H.

>
> /Henrik
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

-- 
Herv? Pag?s

Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024

E-mail: hpages at fhcrc.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319



[Rd] No error when assigning values to an "empty" vector/matrix/array
=?windows-1252?Q?Herv=E9_Pag=E8s?=