[R-br] Salvar e ler de bando de dados

Adriele Giaretta Biase adrielegbiase em gmail.com
Quinta Março 23 08:56:34 BRT 2017


Olá pessoal,



eu estou trabalhando no R com conjunto de dados muito grande (numa fase de
teste) e a tendência é que essa banco de dados aumente ainda mais, numa
próxima etapa que não será teste. E em algumas de minhas programações, o R
retornou mensagem de aviso dizendo que não podia alocar o vetor de tamanho
de 3.7 GB.

Dessa forma, ao invés de concatenar uma matriz em baixo da outra num objeto
criado (onde ele me retorna que não foi capaz de armazenar tudo), eu
gostaria de ir salvando cada matriz gerada de resultado no diretório local.

Minha dúvida, é como criar esse algoritmo de forma que eu consiga salvar
dentro de um loop, data.frames com nomes diferentes, sem que ocorra
substituição de um data.frame pelo outro.

Eu criei um código mínimo (de forma que vocês possam me dar alguma ajuda),
e eu possa adaptar para a situação que estou trabalhando. Esse código está
substituindo o data.frame a cada rodada dentro do loop. Eu queria que o
nome do data.frame alterasse para que guardasse todos os resultados com
nomes diferentes, acompanhando a variação do loop (1,2, ..., N):



library(MASS)

salva_BD_i <- function(N){

  for (i in 1:N){

    p  <- 30    # numero de variáveis a serem geradas (p)

    ME     <- rep(1, p)

    rho    <- 0.5 # correlacao

    sigma2 <- 1

    sigma  <- sigma2 * ((1-rho)*diag(p)+rho*matrix(1, p, p))

    n <- 10000

    Y  <- mvrnorm(n, ME, sigma)

    write.table(Y, "i.txt")

    }

}



N=30000

salva = salva_BD_i(N)





Numa segunda etapa, eu precisaria de ler (puxar todos os data.frame para
dentro de um objeto do R, num loop. Também criei um código mínimo
executável, mas acontece o mesmo, o índice do loop não é processado dentro
do read.table:

> setwd('C:\\Users\\Adriele\\ teste')



> dir()

 [1] "1.txt"   "2.txt"     "3.txt"     "4.txt"     "5.txt"     "6.txt"
"7.txt"     "8.txt"     "9.txt"   "10.txt" "Adriele.R"



Leia_BD_i <- function(N){

  aux= c()

  for (i in 1:N){

    BD_i <- read.table("i.txt",  header = TRUE)

    media = apply(BD_i, 2, mean)

    aux = rbind(aux, media)

  }

  return(medias = aux)

}



N=10

Leitura = Leia_BD_i(N)


Error in file(file, "rt") : cannot open the connection

In addition: Warning message:

In file(file, "rt") : cannot open file 'i.txt': No such file or directory

Agradeço se alguém puder contribuir,

-- 
Adriele Giaretta Biase.
Mestre em  Estatística e Experimentação Agropecuária - UFLA.
Doutora em Estatística e Experimentação Agronômica - ESALQ/ USP
Contato: (19) 98861-0619.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20170323/909022bf/attachment.html>


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