[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