[Rd] No error when assigning values to an "empty" vector/matrix/array
Hervé Pagès
hpages at fhcrc.org
Fri Oct 24 10:58:44 CEST 2014
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
More information about the R-devel
mailing list