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

FHRB Toledo fernandohtoledo em gmail.com
Quinta Março 23 12:18:04 BRT 2017


Use tanto no write.table() quanto no read.table() a função paste0() para
gerar o nome variando conforme i:

> write.table(Y, paste0(i, '"txt"))

E para ler:

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

Espero ter ajudado.

att,
FH

2017-03-23 5:56 GMT-06:00 Adriele Giaretta Biase via R-br <
r-br em listas.c3sl.ufpr.br>:

>
> 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.
>
> _______________________________________________
> R-br mailing list
> 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/20170323/6a16ba9a/attachment.html>


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