Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I am trying to generate all possible permutations of a long vector (30 elements) consisting of 0 and 1. I have tried several functions including permn and expand.grid , but none of them seems to be able to cope with this issue (due to size constraints).

Any advice would be really helpful!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
219 views
Welcome To Ask or Share your Answers For Others

1 Answer

What you need is a multiset permutation.

> library(iterpc)
> I <- iterpc(c(16, 14), labels=c(0,1), ordered=TRUE)
> getlength(I)
[1] 145422675

The matrix is 145422675 by 30, too large to be stored in a single matrix. Use getnext to get the next 10000000 permutations.

> getnext(I, 10000000)

You could repeat the above 15 times in order to get all the permutations.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...