[R] combinatorics again
Uwe Ligges
ligges at statistik.uni-dortmund.de
Mon Mar 6 10:36:23 CET 2006
Robin Hankin wrote:
> Thank you Jacques
>
> but your solution misses (eg) c(1,1,2) which I need.
See ?combinations which should point you to
combinations(5,3, repeats.allowed=TRUE)
Best,
Uwe
> best wishes
>
> Robin
>
>
>
> On 6 Mar 2006, at 09:17, Jacques VESLOT wrote:
>
>
>>>library(gtools)
>>>combinations(5,3)
>>
>> [,1] [,2] [,3]
>>[1,] 1 2 3
>>[2,] 1 2 4
>>[3,] 1 2 5
>>[4,] 1 3 4
>>[5,] 1 3 5
>>[6,] 1 4 5
>>[7,] 2 3 4
>>[8,] 2 3 5
>>[9,] 2 4 5
>>[10,] 3 4 5
>>
>>
>>Robin Hankin a écrit :
>>
>>
>>>Hi
>>>
>>>I want to enumerate all vectors of length "J", whose elements are
>>>integers in the range 1 to S, without regard to ordering.
>>>
>>>With J=S=3, the combinations are as follows:
>>>
>>>
>>> [,1] [,2] [,3]
>>> [1,] 1 1 1
>>> [2,] 1 1 2
>>> [3,] 1 1 3
>>> [4,] 1 2 2
>>> [5,] 1 2 3
>>> [6,] 1 3 3
>>> [7,] 2 2 2
>>> [8,] 2 2 3
>>> [9,] 2 3 3
>>>[10,] 3 3 3
>>>
>>>
>>>Note that (eg) c(1,2,1) is not on the list because we already have
>>>c(1,1,2) which would be equivalent [because the problem is to
>>>enumerate the cases without regard to ordering] and I do not want
>>>repeats.
>>>
>>>The best I can do is to create all S^J possibilities and weed out the
>>>repeats, using unique() ; code below.
>>>
>>>Why is this no good? Well, even for the tiny case of J=S=10, this
>>>would require a matrix of 10^10 rows, and my little linux machine
>>>refuses to cooperate, complaining about allocating a vector of
>>>length 1410065408. For these values of J and S, I happen to know
>>>that the are 6360 distinct combinations, which is eminently
>>>handleable.
>>>
>>>
>>>Anyone got any better ideas?
>>>
>>>
>>>
>>>
>>>
>>>
>>>allcomb <- function(J,S){
>>>
>>> f <- function(...) {
>>> 1:S
>>> }
>>> out <- as.matrix(do.call("expand.grid", lapply(1:J, FUN = f)))
>>> out <- t(apply(out,1,sort))
>>> unique(out)
>>>}
>>>
>>>
>>>--
>>>Robin Hankin
>>>Uncertainty Analyst
>>>National Oceanography Centre, Southampton
>>>European Way, Southampton SO14 3ZH, UK
>>> tel 023-8059-7743
>>>
>>>______________________________________________
>>>R-help at stat.math.ethz.ch mailing list
>>>https://stat.ethz.ch/mailman/listinfo/r-help
>>>PLEASE do read the posting guide! http://www.R-project.org/posting-
>>>guide.html
>>>
>>>
>
>
> --
> Robin Hankin
> Uncertainty Analyst
> National Oceanography Centre, Southampton
> European Way, Southampton SO14 3ZH, UK
> tel 023-8059-7743
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
More information about the R-help
mailing list