[R-br] [R_STAT] [Dúvida] Carregar dados sem ser na memória RAM
Benilton Carvalho
beniltoncarvalho em gmail.com
Domingo Março 20 19:01:01 BRT 2011
Eu tenho usado o bigmemory desde antes da versao publica e devo dizer
que a implementacao atual e' deveras superior q a de 2009, mas a
manipulacao de caracteres (e, consequentemente, niveis de fatores) nao
e' algo trivial em solucoes como bigmemory.
O lance a respeito de inteiros e' o fato de ser um objeto naturalmente
menor e isso acelera qualquer calculo executado.
set.seed(1)
x = sample(1:10L, 5e6, rep=T)
y = as.numeric(x)
all.equal(mean(x), mean(y))
f = function() system.time(mean(x))
g = function() system.time(mean(y))
rowMeans(replicate(100, f()))
rowMeans(replicate(100, g()))
Mas, em suma, o que eu falei nao foi muito claro... A essencia e' que,
sabendo que o fator e' nada mais que inteiros, entao a gente pode
(manualmente) fazer o que quer que seja que fariamos com os fatores,
mas usando uma representacao inteira. :)
abs
2011/3/20 Leandro Marino <leandromarino em leandromarino.com.br>:
> É verdade Benilton.
>
> Posso ter entendido errado, mas certa vez assisti uma palestra do Jay
> Emmerson e ele informava que a melhor forma para trabalho no bigmemory era
> através de inteiros. Acredito que por não trabalhar com data.frame's e sim
> matrizes. Salvo engano, não há a possibilidade no R de armazenar fatores em
> matrizes, pelo que me lembro (posso estar muito enganado) ele
> automaticamente converte para character.
>
> Um pequeno exemplo:
> str( matrix(factor(1:4,labels=paste('teste',1:4)),ncol=2))
> chr [1:2, 1:2] "teste 1" "teste 2" "teste 3" "teste 4"
>
> Como tenho o hábito de trabalhar com data.frames não sei muito bem como é
> trabalhado no R estes outros formatos.
>
> Tendo feito a leitura com o bigmemory existem uma série de outros pacotes
> relacionados que devem ser utlizados. bigalgebra, bigtabulate ...
>
> A terceiro opção do Benilton, para mim, é muito boa. Agora tudo depende do
> uso que terá que se fazer dos dados. Eventualmente, algumas soluções podem
> exigir mais trabalhos que outras...
>
> Um abraço,
> Leandro
>
>
> Atenciosamente,
> Leandro Marino
> http://www.leandromarino.com.br (Fotógrafo)
> http://est.leandromarino.com.br/Blog (Estatístico)
> Cel.: + 55 21 9845-7707
> Cel.: + 55 21 8777-7907
>
>
>
> Em 20 de março de 2011 16:56, Benilton Carvalho <beniltoncarvalho em gmail.com>
> escreveu:
>>
>> Visto que um fator (no R) nao e' nada mais que um vetor de inteiros,
>> entao nao vejo pq o bigmemory seria sub-otimo nesse caso... a menos
>> que o numero de niveis do fator seja muito grande (no limite isso
>> seria um vetor de caracteres... e esses sao armazenados em RAM).
>>
>> Outra alternativa, igualmente limitada no aspecto de caracteres, e' o
>> pacote 'ff'.
>>
>> E a terceira e' usar um banco de dados de verdade.... SQLite, SQL,
>> etc... e fazer um fetch apenas da porcao relevante para o passo em
>> questao..
>>
>> b
>>
>> 2011/3/20 Leandro Marino <leandromarino em leandromarino.com.br>:
>> > Fernando,
>> >
>> > na realiade o SOAR pode até ajudar, mas nas realidade ele é um mecanismo
>> > de
>> > fazer I/O, mas quando se está utilizando o conjunto de dados ele o
>> > carrega
>> > para memória RAM.
>> >
>> > Utilizo sempre o SOAR visto que tem um poder de compactação incrível de
>> > dados no HD. Arquivos de 100mb apos lidos com o pacote, ficam apenas com
>> > 10mb de espaço ocupado em HD. Ele também é ótimo para se trabalhar com
>> > uma
>> > grande quantidade de conjuntos intermediários ao mesmo tempo. Mas
>> > eventualemente é necessário salvá-los no HD e limpar a memória com gc().
>> >
>> > Neste caso específico, se o banco de dados for de apenas números
>> > inteiros,
>> > tais quais as bases de dados do IBGE, recomendo a utilização do
>> > BigMemory.
>> > elo que sei, ele não trabalha de forma eficiente com variáveis do tipo
>> > fator
>> > ou caracter.
>> >
>> > De qualquer forma, para a importação, recomendo fortemente a exportação
>> > desta base de dados em formato texto, fica muito mais fácil para se
>> > trabalhar. Além de existir, opções bem eficientes para a leitura dos
>> > dados,
>> > como a função read.lines (ótima para conjunto de dados grandes).
>> >
>> > Atenciosamente,
>> > Leandro Marino
>> > http://www.leandromarino.com.br (Fotógrafo)
>> > http://est.leandromarino.com.br/Blog (Estatístico)
>> > Cel.: + 55 21 9845-7707
>> > Cel.: + 55 21 8777-7907
>> >
>> >
>> >
>> > Em 20 de março de 2011 11:24, Fernando Mayer <fernandomayer em gmail.com>
>> > escreveu:
>> >>
>> >> O pacote SOAR pode resolver. De uma olhada no manual e na vignette em
>> >>
>> >> http://cran-r.c3sl.ufpr.br/web/packages/SOAR/index.html
>> >>
>> >> []s,
>> >>
>> >> ---
>> >> Fernando Mayer
>> >> URL: http://sites.google.com/site/fernandomayer
>> >> e-mail: fernandomayer [@] gmail.com
>> >>
>> >>
>> >>
>> >> 2011/3/20 pedrorafaelmarinho <pedrorafaelmarinho em yahoo.com.br>:
>> >> > Pessoal estou com um problema ou talvez seja do R. Tenho que ler uma
>> >> > base de dados de 600 mb em formato DBF (DBase). O R pelo que ando
>> >> > lendo ele
>> >> > ler a base de dados e joga na memória RAM. Toda vez que carrego essa
>> >> > base de
>> >> > dados o pc trava a ponto de o mouse não funcionar. Existe alguma
>> >> > forma de
>> >> > fazer com que o R não carregue toda a base de dados diretamente na
>> >> > memória?
>> >> > Por exemplo a base de dados ficar no HD e somente carregar algumas
>> >> > variáveis
>> >> > a medida que vou precisando? Softwares simples como o Tabwin eu
>> >> > consigo
>> >> > acessar a base de dados e o pc não trava...O que está acontecendo?
>> >> > O comando que usei para carregar a base foi read.dbf() usando o
>> >> > pacote
>> >> > foreign.
>> >> >
>> >> >
>> >> >
>> >> > ------------------------------------
>> >> >
>> >> > Links do Yahoo! Grupos
>> >> >
>> >> > <*> Para visitar o site do seu grupo na web, acesse:
>> >> > http://br.groups.yahoo.com/group/R_STAT/
>> >> >
>> >> > <*> Para sair deste grupo, envie um e-mail para:
>> >> > R_STAT-unsubscribe em yahoogrupos.com.br
>> >> >
>> >> > <*> O uso que você faz do Yahoo! Grupos está sujeito aos:
>> >> > http://br.yahoo.com/info/utos.html
>> >> >
>> >> >
>> >> >
>> >> _______________________________________________
>> >> R-br mailing list
>> >> R-br em listas.c3sl.ufpr.br
>> >> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> >
>> >
>> > _______________________________________________
>> > R-br mailing list
>> > R-br em listas.c3sl.ufpr.br
>> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> >
>> >
>
>
Mais detalhes sobre a lista de discussão R-br