Memória vetorial esgotada

Estou tentando fazer análise de co-expressão gênica no R com bancos de dados bastante grandes (data frame com mais de 100.000 linhas e 14 colunas).

Está demorando bastante para rodar, no final aparece a mensagem “memória vetorial esgotada (limite atingido?)”.

O estranho é que são diversos data frames com esse tamanho que pretendo analisar (1 de cada vez) e com o primeiro funcionou bem, mas agora com o segundo começou a dar esse problema…

Como faço para solucionar isso? Já tentei desligar o computador para limpar a RAM e também fechei todos os outros programas e limpei o cache, antes de rodar as análises, mas não funcionou…

Será que vou ter que rodar esse programa em algum servidor? dá para fazer isso no R Studio Cloud e seria essa a melhor solução ou o R Cloud é apenas um repositório? se eu precisar de um servidor público, como faço para procurar um que eu possa usar? existem servidores públicos que qualquer pessoa possa usar sem estar, por exemplo, vinculada a uma universidade?

muito obrigado,

Fabiano

Fabiano,

Quantos gigas de RAM o seu computador tem? Parece que o segundo data frame não cabe na memória mesmo, não tem muito jeito de contornar isso. Uma ideia simples, mas que talvez ajude, é remover o banco anterior da memória antes de carregar o próximo e não criar objetos intermediários:

# Exemplo
for (caminho in caminhos) {
  df <- ler(caminho)
  df <- tratar(df) # Salvar o resultado do tratamento no mesmo objeto
  salvar(df, caminho)
  
  rm(df) # Antes de ler a próxima base, remover a primeira
}

Não conheço servidores com acesso gratuito que possuam uma quantidade razoável de memória. No plano gratuito do RStudio Cloud, por exemplo, você tem apenas 1GB de RAM; também ão conheço “servidores públicos”, apenas provedores de servidores na nuvem (AWS, GCP, etc.) que cobram por tempo de computação.

muito obrigado, Caio

Consegui resolver o problema, aumentado a memória virtual, fechando todos os outros programas e reiniciando o computador para limpar a RAM e a cache. Somente a soma dessas 3 medidas deu certo.

Para aumentar a memória virtual eu fiz isso aqui https://www.javaer101.com/article/7049390.html

Fabiano

1 curtida