[R] Permutations

Stephan Kolassa Stephan.Kolassa at gmx.de
Tue May 13 10:30:38 CEST 2008


Hi Elke,

the matrix you are trying to create has 5^21 = 476837158203125 rows and 21 columns. I'm afraid Thierry's proposal with n=21 will not fit into memory. And the file you are writing is 5^21*5*8 bytes big, about 80108643 GB.

Perhaps you want to think a little more about what you are trying to achieve and, e.g., consider random sampling from the matrix?

In addition, look at your code: you append every single line to the output file, i.e., you open and close your file 5^21 = 476837158203125 times. File I/O always takes a lot of time. File I/O in a loop usually leads to slow execution.

HTH,
Stephan



ONKELINX, Thierry schrieb:
> Dear Elke,
> 
> I think you need something like this. It's only for 3 variables, but I
> think you know how to expand it for more variables.
> 
> mat <- expand.grid(a = 0:4, b = 0:4, c = 0:4)
> write.table(mat, file="C:/Documents and Settings/My
> Documents/permutations.txt",sep=";",col.names=FALSE, row.names=FALSE)
> 
> HTH,
> 
> Thierry

> Van: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
> Namens Elke Moons
> Verzonden: dinsdag 13 mei 2008 9:49
> Aan: r-help at r-project.org
> Onderwerp: [R] Permutations
> 
> Dear R-users,
> 
> 
> 
> 
> 
> Is there an easy way to determine all possible vectors of length 21 with
> each entry having permutations from 0 to 4, instead of doing it like
> this?
> It really takes up too much time, and I am convinced that there exists
> something easier.
> 
> Can you help me? Thank you in advance! 
> 
> Kind regards,
> 
> 
> 
> 
> 
> Elke
> 
> 
> 
> for (a in 0:4){
> 
> for (b in 0:4){
> 
> for (c in 0:4){
> 
> for (d in 0:4){
> 
> for (e in 0:4){
> 
> for (f in 0:4){
> 
> for (g in 0:4){
> 
> for (h in 0:4){
> 
> for (i in 0:4){
> 
> for (j in 0:4){
> 
> for (k in 0:4){
> 
> for (l in 0:4){
> 
> for (m in 0:4){
> 
> for (n in 0:4){
> 
> for (o in 0:4){
> 
> for (p in 0:4){
> 
> for (q in 0:4){
> 
> for (r in 0:4){
> 
> for (s in 0:4){
> 
> for (u in 0:4){
> 
> for (v in 0:4){
> 
> vec<-list(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,u,v)
> 
> write.table(vec,file="C:/Documents and Settings/My
> Documents/permutations.txt",sep=";",col.names=FALSE, row.names=FALSE,
> append=TRUE)
> 
> }
> 
> }
> 
> }
> 
> }
> 
> }
> 
> }
> 
> }
> 
> }
> 
> }
> 
> }
> 
> }
> 
> }
> 
> }
> 
> }
> 
> }
> 
> }
> 
> }
> 
> }
> 
> }
> 
> }
> 
> }

--



More information about the R-help mailing list