[R-br] Problema de memória: MATRIZES GIGANTES

Benilton Carvalho beniltoncarvalho em gmail.com
Sexta Agosto 3 16:43:12 BRT 2012


library(bigmemory)
y = big.matrix(1200, 53130, tape='double', backingfile='cache.bin')
for ( i in 1:53130) y[,i] = rnorm(1200)
y[1:10,1:4]

Deixo para vc o exercício de ler o manual e toda a documentação no site do
projeto e adapta-lo ao seu caso.

b

On Friday, 3 August 2012, andrebvs wrote:

> Olá pessoal, gostaria de saber como faço para simular um conjunto de dados
> com 53130 colunas e 1200 linhas sem problemas. Segue a rotina abaixo com a
> especificação de meu PC. Sei que existe um pacote chamado *"bigmemory*"
> mas não sei utilizar. Então, se for possível, gostaria que acrescentassem
> nessa minha rotina abaixo o uso desse pacote para resolver o problema que
> está aparecendo que é: "*Erro: não é possível alocar vetor de tamanho 2.4
> Gb*".
>
> *# Matriz simulada:*
>
> X <- matrix(rpois(30000,5),1200,25)
> colnames(X) <- paste("C",1:25,sep="")
>
> *# Combinando as 25 colunas tomadas 5 à 5: *
>
> combina <- combn(ncol(X),5)
> MultMat <-
> array(X[,combina],dim=c(nrow(X),dim(combina)[1],dim(combina)[2]))
> dim(MultMat)
>
> *# Verificando o rótulo (sequência) de uma determinada combinação:*
>
> comb <- 53130  # nº de comb. possiveis de 25 colunas tomadas 5 à 5.
> nomes_das_colunas = as.vector(colnames(X))
> colunas_combinadas = combn(nomes_das_colunas,5)
> colunas_combinadas[,comb]
> rotcomb <- paste("C",1:comb,sep="")
>
> *# Conferindo todas as linhas de uma determinada combinação:*
>
> combinação <- MultMat[,,1]
> colnames(combinação) <- colunas_combinadas[,1]
> combinação
>
> *# Armazenando numa lista as somas de cada linha de cada combinação:*
>
> armsoma <- rep(list(rep(0,1200)),comb)
>
> for (i in 1:comb)
> {
> soma_linhas <- colSums(aperm(MultMat,c(2,1,3)))
> soma_linhas <- cbind(soma_linhas[,i])
> colnames(soma_linhas) <- rotcomb[i]
> armsoma[[i]] <- soma_linhas
> }
>
> saida <- matrix(unlist(armsoma),1200,comb)
> write.table(saida,file="saidaCOMB.txt",append = FALSE, quote = TRUE, sep =
> " ")
>
> **Configurações do meu laptop:
>
> Marca: Compaq
> Processador: Intel Pentium Dual Core
> HD: 320 GB
> Mémoria: 3GB RAM
> Sistema: Windows7
> Bits: 32
> R version 2.13
> *
> **desde já agradeço!
>
> Att.
> André**
> *
> ------------------------------
> Em 31/07/2012 17:09, *Benilton Carvalho < beniltoncarvalho em gmail.com<javascript:_e({}, 'cvml', 'beniltoncarvalho em gmail.com');>>
> * escreveu:
> e se quiser economizar uns decimos de segundo:
>
> colSums(aperm(MultMat, c(2, 1, 3)))
>
> 2012/7/31 Fabio Mathias Corrêa :
> > Isso mesmo!
> >
> > Veja o help!
> >
> > ?array
> > ?apply
> >
> > Fábio Mathias Corrêa
> >
> > Universidade Estadual de Santa Cruz
> > Departamento de Ciências Exatas e da Terra - DCET
> >
> >
> > Campus Soane Nazaré de Andrade, km 16 Rodovia Ilhéus-Itabuna
> > CEP 45662-900. Ilhéus-Bahia
> >
> >
> > Tel.: 73-3680-5076
> > ________________________________
> > De: andrebvs
> >
> > Para: r-br em listas.c3sl.ufpr.br <javascript:_e({}, 'cvml',
> 'r-br em listas.c3sl.ufpr.br');>
> > Enviadas: Terça-feira, 31 de Julho de 2012 13:22
> > Assunto: Re: [R-br] Combinar colunas de um banco de dados...
> >
> > obg Luciano!
> >< br />>
> > ________________________________
> > Em 30/07/2012 09:24, Luciano F. Sgarbi < luciano.f.sgarbi em gmail.com<javascript:_e({}, 'cvml', 'luciano.f.sgarbi em gmail.com');>>
> > escreveu:
> > #Seria isso:
> > data<-read.table('clipboard',h=T)##esse é aquela matriz de 12 colunas
> > combinations<-combn(colnames(data),6)
> > loop<-ncol(combinations)
> > resu<-matrix(0,10,loop)
> > colnames(resu)<-paste(rep("comb",loop),"_",1:loop,sep="")
> > rownames(resu)<-paste(rep("row",10),"_",1:10,sep="")
> > for(i in 1:loop){
> > resu[,i]<-rowSums(data[,combinations[,i]])
> > }
> > resu
> >
> >
> > 2012/7/29 andrebvs
> >
> > Obg colegas!
> >
> > Agora, tem como somar as linhas de cada combinação? De forma que eu
> tenha
> > um resultado geral do tipo:
> >
> > C1Â C2Â C3Â ... C924
> > [1,]Â Â Â 5Â Â 5
> > [1,] Â Â 6Â Â 5
> > [1, ] Â Â 4Â Â 6
> > [1,] Â Â 6Â Â 5
> > [1,]Â Â Â 6Â Â 4
> > [1,] Â Â 4Â Â 7
> > [1,]Â Â Â 4Â Â 7
> > [1,] Â Â 3Â Â 8
> > [1,] Â Â 9Â Â 8
> > [1,] Â Â 2 Â 6
> > .
> > .
> > .
> > [1265,]
> >
> >
> > thanks!
> >
> >
> > ________________________________
> > Em 29/07/2012 20:01, Luciano F. Sgarbi < luciano.f.sgarbi em gmail.com<javascript:_e({}, 'cvml', 'luciano.f.sgarbi em gmail.com');>>
> > escreveu:
> > É isso mesmo!
> >
> > 2012/7/29 Pedro Rafael
> >
> > Se quiser uma outra combinação colocar
> > dados[as.vector(colunas_combinadas[,2])]
> > [ Â ],
> > Pedro Rafael Diniz Marinho.
> >
> >
> > Em 29 de julho de 2012 19:55, Pedro Rafael
> > escreveu:
> >> dados = read.table("dados_teste.txt",header=TRUE)
> >> nomes_das_colunas = as.vector(colnames(dados))
> >> colun as_combinadas = combn(nomes_das_colunas,6)
> >> dados[as.vector(colunas_combinadas[,1])]
> >> [ Â ],
> >> Pedro Rafael Diniz Marinho.
> >>
> >>
> >> Em 29 de julho de 2012 19:47, andrebvs [via R-br]
> >> escreveu:
> >>> Olá Luciano!
> >>>
> >>> A dúvida é a seguinte:
> >>> 1º) Tenho o seguinte banco de dados abaixo:
> >>>
> >>>
> >>> Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12
> >>> 1 Â Â 1 Â 0 Â 3 Â 1 Â 0 Â 0 Â 0 Â 1 Â 0 Â Â 1 Â Â 0 Â Â 1
> >>> 2 Â Â 1 Â 3 Â 0 Â 0 Â 1 Â 1 Â 0 Â 1 Â 1 Â Â 0 Â Â 2 Â Â 1
> >>> 3 Â Â 0 Â 2 Â 1 Â 0 Â 0 Â 1 Â 3 Â 0 Â 0 Â Â 1 Â Â 0 Â Â 0
> >>> 4 Â Â 1 Â 0 Â 0 Â 2 Â 2 Â 1 Â 0 Â 0 Â 0 Â Â 0 Â Â 2 Â Â 1
> >>> 5 Â Â 0 Â 2 Â 1 Â 0 Â 1 Â 2 Â 0 Â 1 Â 1 Â Â 1 Â Â 0 Â Â 2
> >>> 6 Â Â 1 Â 1 Â 0 Â 1 Â 1 Â 0 Â 3 Â 1 Â 2 Â Â 1 Â Â 1 Â Â 0
> >>> 7 Â Â 1 Â 1 Â 0 Â 1 Â 1 Â 0 Â 0 Â 0 Â 0 Â Â 1 Â Â 1 Â Â 1
> >>> 8 Â Â 0 Â 1 Â 0 Â 1 Â 0 Â 1 Â 2 Â 0 Â 2 Â Â 0 Â Â 3 Â Â 0
> >>> 9 Â Â 1 Â 2 Â 3 Â 1 Â 2 Â 0 Â 0 Â 0 Â 0 Â Â 2 Â Â 0 Â Â 1
> >>> 10 Â Â 0 Â 1 Â 0 Â 1 Â 0 Â 0 Â 1 Â 0 Â 1 Â Â 1 Â Â 0 Â Â 2
> >>>
> >>> 2º) Quero combinar todas as 12 colunas tomadas 6 à 6, fazendo as
> contas
> >>> terei 924 combinações possivéis, e uma combinação possível seria,
> >>> por
> >>> exemplo a seguinte:
> >>>
> >>> Q1 Â Q4 Â Q7 Q8 Q9 Â Q12
> >>> 1 Â Â 1 Â Â 1 Â Â 0 Â 1 Â 0 Â Â 1
> >>> 2   1   0   0 Â  1  1   1
> >
> >>> 3 Â Â 0 Â Â 0 Â Â 3 Â 0 Â 0 Â Â 0
> >>> 4 Â Â 1 Â Â 2 Â Â 0 Â 0 Â 0 Â Â 1
> >>> 5 Â Â 0 Â Â 0 Â Â 0 Â 1 Â 1 Â Â 2
> >>> 6 Â Â 1 Â Â 1 Â Â 3 Â 1 Â 2 Â Â 0
> >>> 7 Â Â 1 Â Â 1 Â Â 0 Â 0 Â 0 Â Â 1
> >>> 8 Â Â 0 Â Â 1 Â Â 2 Â 0 Â 2 Â Â 0
> >>> 9 Â Â 1 Â Â 1 Â Â 0 Â 0 Â 0 Â Â 1
> >>> 10 Â Â 0 Â 1 Â Â 1 Â 0 Â 1 Â Â 2
> >>>
> >>> Repare que, das 12 colunas iniciais, tenho essa última com 6 colunas,
> a
> >>> qual
> >>> é uma possível combinação das 924. Então, como extrair todas as
> 924
> >>> combinações da matriz inicial?
> >>>
> >>> 3º) Após isso, ou seja, após ter encontrado todas as 924
> >>> combinações,
> >>> gostaria também, que tivesse um vetor q ue me retorne a soma de cada
> >>> linha
> >>> de cada combinação. Por exemplo:
> >>>
> >>> combin ação1
> >>> combinação924
> >>> Q1  Q4  Q7 Q8 Q9  Q12   soma das linhas      . . . Q6  Q1
> >>> Â Q11 Â Q2 Q9
> >>> Q7 Â Â Â Â Â soma das linhas
> >>> 1 Â Â 1 Â Â 1 Â Â 0 Â 1 Â 0 Â Â 1 Â Â Â Â Â Â 4
> >>> 0 Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> >>> 2
> >>> 2 Â Â 1 Â Â 0 Â Â 0 Â 1 Â 1 Â Â 1 Â Â Â Â Â Â 4
> >>> 1 Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> >&gt ;> 3
> >>> 3 Â Â 0 Â Â 0 Â Â 3 Â 0 Â 0 Â Â 0 Â Â Â Â Â Â 3 Â Â Â Â Â
> >>>           � �
> >>> 3 Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> >>> 5
> >>> 4 Â Â 1 Â Â 2 Â Â 0 Â 0 Â 0 Â Â 1 Â Â Â Â Â Â 4
> >>> 3 Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> >>> 1
> >>> 5 Â Â 0 Â Â 0 Â Â 0 Â 1 Â 1 Â Â 2 Â Â Â Â Â Â 4
> > &g t;> . Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> > Â Â .
> >
> >>> 6 Â Â 1 Â Â 1 Â Â 3 Â 1 Â 2 Â Â 0 Â Â Â Â Â Â 8
> >>> . Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> >>> Â .
> >>> 7 Â Â 1 Â Â 1 Â Â 0 Â 0 Â 0 Â Â 1 Â Â Â Â Â Â 3 Â Â Â Â Â
> >>>           �
> >>> �   .                     Â
> >>> Â Â Â Â .
> >>> 8 Â Â 0 Â Â 1 Â Â 2 Â 0 Â 2 Â Â 0 Â Â Â Â Â Â 5
> >>> etc                       Â
> >>> etc
> >>> 9 Â Â 1 Â Â 1 Â Â 0 Â 0 Â 0 Â Â 1 Â Â Â Â Â Â 3
> >>> 10 Â Â 0 Â 1 Â Â 1 Â 0 Â 1 Â Â 2 Â Â Â Â Â Â 5
> >>>
> >>> desde já agradeço!
> >>>
> >>>
> >>> ________________________________
> >>> Em 29/07/2012 19:04, Luciano F. Sgarbi < [hidde n email] > escreveu:
> >
> >>> Boa tarde.
> >>> Tentei, mas não entendi sua pergunta.
> >>> Você pode ser um pouco mais especifico?
> >>> Abraços
> >>>
> >>> 2012/7/29 andrebvs
> >>>>
> >>>> Olá pessoal, gostaria de saber como faço para combinar essas 12
> >>>> colunas
> >>>> (Q1 até Q12) tomados 6 à 6 colunas:
> >>>>
> >>>> Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12
> >>>> 1 Â Â 1 Â 0 Â 3 Â 1 Â 0 Â 0 Â 0 Â 1 Â 0 Â Â 1 Â Â 0 Â Â 1
> >>>> 2 Â Â 1 Â 3 Â 0 Â 0 Â 1 Â 1 Â 0 Â 1 Â 1 Â Â 0 Â Â 2 Â Â 1
> >>>> 3 Â Â 0 Â 2 Â 1 Â 0 Â 0 Â 1 Â 3 Â 0 Â 0 Â Â 1 Â Â 0 Â Â 0
> >>>> 4 Â Â 1 Â 0 Â 0 Â 2 Â 2 Â 1 Â 0 Â 0 Â 0 Â Â 0 Â Ã ‚ 2 Â Â 1
> >>>> 5 Â Â 0 Â 2 Â 1 Â 0 Â 1 Â 2 Â 0 Â 1 Â 1 Â Â 1 Â Â 0 Â Â 2
> >>>> 6   1  1  0  1  1  0  3  1 Â  2   1   1   0
> >
> >>>> 7 Â Â 1 Â 1 Â 0 Â 1 Â 1 Â 0 Â 0 Â 0 Â 0 Â Â 1 Â Â 1 Â Â 1
> >>>> 8 Â Â 0 Â 1 Â 0 Â 1 Â 0 Â 1 Â 2 Â 0 Â 2 Â Â 0 Â Â 3 Â Â 0
> >>>> 9 Â Â 1 Â 2 Â 3 Â 1 Â 2 Â 0 Â 0 Â 0 Â 0 Â Â 2 Â Â 0 Â Â 1
> >>>> 10   0  1 � � 0  1  0  0  1  0  1   1   0  Â
> >>>> 2
> >>>>
> >>>> desde já agradeço!
> >>>>
> >>>> Att.
> >>>> André
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>& gt; R-br mailing list
> >>>> R-br em ...
> >>>>
> >>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> >>>> Leia o guia de postagem (http://www.leg.ufpr.b r/r-br-guia) e
> forneça
> >
> >>>> código mínimo reproduzível.
> >>>
> >>>
> >>>
> >>> --
> >>> Luciano F. Sgarbi
> >>> Mestrando em Ecologia e Evolução - UFG
> >>>
> >>> Laboratório de Ecologia de Insetos
> >>> Cel. (62)8174-2262 Lab. (62)3521-1732
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> _______________________________________________
> >>> R-br mailing list< br />>>> [hidden email]
> >>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> >>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneç a
> >>> código
> >
> >>> mínimo reproduzível.
> >>>
> >>> ________________________________
> >>> If you reply to this email, your message will be added to the
> discussion
> >>> below:
> >>>
> >>>
> http://r-br.2285057.n4.nabble.com/R-br-Combinar-colunas-de-um-banco-de-dados-tp4655709p4655711.html
> >>> To unsubscribe from R-br, click here.
> >>> NAML
> > _________________ ______________________________
> > R-br mailing list
> > R-br em listas.c3sl.ufpr.br <javascript:_e({}, 'cvml',
> 'R-br em listas.c3sl.ufpr.br');>
> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> > Leia o guia de postagem (http://www.leg.ufpr .br/r-br-guia) e forneça
> > código mínimo reproduzível.
> >
> >
> >
> > --
> > Luciano F. Sgarbi
> > Mestrando em Ecologia e Evolução - UFG
> > Laboratório de Ecologia de Insetos
> > Cel. (62)8174-2262 Lab. (62)3521-1732
> > Â
> > Â
> >
> >
> >
> > _______________________________________________
> > R-br mailing list
> > R-br em listas.c3sl.ufpr.br <javascript:_e({}, 'cvml',
> 'R-br em listas.c3sl.ufpr.br');>
> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> & gt; Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e
> forneça
> > código mínimo reproduzível.
> >
> >
> >
> > --
> > Luciano F. Sgarbi
> > Mestrando em Ecologia e Evolução - UFG
> >
> > Laboratório de Ecologia de Insetos
> > Cel. (62)8174-2262 Â Lab. (62)3521-1732
> > Â
> > Â
> >
> >
> > _______________________________________________
> > R-br mailing list
> > R-br em listas.c3sl.ufpr.br <javascript:_e({}, 'cvml',
> 'R-br em listas.c3sl.ufpr.br');>
> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código
> > mínimo reproduzível.
> >
> >
> > ______________________________ _________________
> > R-br mailing list
> > R-br em listas.c3sl.ufpr.br <javascript:_e({}, 'cvml',
> 'R-br em listas.c3sl.ufpr.br');>
> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código
> > mínimo reproduzível.
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br <javascript:_e({}, 'cvml',
> 'R-br em listas.c3sl.ufpr.br');>
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120803/31499077/attachment.html>


Mais detalhes sobre a lista de discussão R-br