
Olá Romero, Precisei fazer algo similar para uma avaliação de um curso, que me inscrevi no Coursera. Estou rodando o programa para 322 arquivos. Dá uma olhada: pollutantmean <- function(directory, pollutant, id = 1:332) { ## 'directory' is a character vector of length 1 indicating ## the location of the CSV files ## 'pollutant' is a character vector of length 1 indicating ## the name of the pollutant for which we will calculate the ## mean; either "sulfate" or "nitrate". ## 'id' is an integer vector indicating the monitor ID numbers ## to be used ## Return the mean of the pollutant across all monitors list ## in the 'id' vector (ignoring NA values) ## NOTE: Do not round the result! files_full <- list.files("specdata", full.names = TRUE) files_full # summary(files_full) tmp <- vector(mode = "list", length = length(files_full)) for (i in seq_along(files_full)) { tmp[[i]] <- read.csv(files_full[[i]]) } output <- do.call(rbind, tmp) # str(output) output_subset <- subset(output, output[, "ID"] %in% id) # subset by any value if (pollutant == "sulfate") { mean(output_subset$sulfate, na.rm = TRUE) } else if (pollutant == "nitrate") { mean(output_subset$nitrate, na.rm = TRUE) } else { print("pollutant can only be nitrate or sulfate!") } } Acho que pode servir a ti! Abs, Vinícius On 06/13/2015 04:56 PM, David Feitosa wrote:
João, não sei o quão esse procedimento irá escalar, mas considere usar um SGBD, como Postgresql/MySQL ou outro.
Há um pacote sqldf que permite trabalhar com consultas à bases de dados e tratar o resultado como um dataframe.
Atenciosamente,
David F.
Em 8 de junho de 2015 11:19, joão Rodrigo Castro <joaorodrigo2005@gmail.com <mailto:joaorodrigo2005@gmail.com>> escreveu:
Entendi Augusto, vou implementar! Muito Obrigado
Em 8 de junho de 2015 11:14, Augusto Ribas <ribas.aca@gmail.com <mailto:ribas.aca@gmail.com>> escreveu:
Algo assim:
#Ve o nome dos arquivos da pasta, use getwd e setwd se precisar mudar de pasta arquivos<-list.files()
#pegue os arquivos que são .dat indices<-grep(".dat",arquivos) arquivos[indices]
#separe um vetor com eles, podemos reutilizar o vetor aqui arquivos<-arquivos[indices]
#Ai você usa alguma estrutura de repetição, um loop por exemplo, para processar um por um for(i in 1:length(arquivos)) { print(paste("Lendo",arquivos[i])) #Seu codigo aqui }
#ai insira seu código ali, fazendo as operações que tem que fazer, e juntando os arquivos, salvando, o que for necessário.
Em 8 de junho de 2015 10:06, joão Rodrigo Castro <joaorodrigo2005@gmail.com <mailto:joaorodrigo2005@gmail.com>> escreveu:
Obrigado Augusto, vou dar uma olhada nas funções que vc citou.
Um trecho do código: # Passo A Teste_SF = read.table("*dado1*.dat", dec=".",h=T ,col.names = c( "ano", "mes", "jday","Rad","Tmax", "Tmin","stopo","trans","dt","lat","lon")) Teste = subset(Teste_SF, trans<0.81 & Rad>1) summary(Teste)
# Passo B dr = 1 + 0.033 * cos(0.0172*Teste$jday) declin = 0.409 * sin(0.0172*Teste$jday - 1.39) omega = acos(-tan(Teste$lat*pi/180) * tan(declin)) Teste$Rad_Pot = 37.6*dr*(omega*sin(declin)*sin(Teste$lat*pi/180) + cos(declin)*cos(Teste$lat*pi/180)*sin(omega))
Há ainda outros passos onde os atributos dos arquivos são lidos e posteriormente utilizados em outros cálculos. No final é gerado um arquivo de saída com o write.table com os resultados obtidos.
Então como são 38 arquivos (dado1.dat, dado2.dat, etc ..... ) a utilização de alguma função que permita a leitura de todos os arquivos, e depois fazer um loop pelos arquivos, tornaria mais dinâmica a tarefa.
Obrigado pelas dicas! João
Em 8 de junho de 2015 10:42, Augusto Ribas <ribas.aca@gmail.com <mailto:ribas.aca@gmail.com>> escreveu:
Não entendi exatamente o problema, mas os arquivos estão em um determinado diretorio? Não daria para dar um list.files() para pegar a lista de arquivos dos diretorio, usar um grep() para selecionar os arquivos que quer ler e então em um loop ir ler os arquivos com read.table, ai você pode ir dando merge ou concatenando eles.
Da um exemplo de código como você está fazendo, talvez alguém tenha uma ideia melhor.
Em 8 de junho de 2015 08:45, joão Rodrigo Castro <joaorodrigo2005@gmail.com <mailto:joaorodrigo2005@gmail.com>> escreveu:
Pessoal,
Tenho utilizado o read.table para ler arquivos e realizar tarefas simples. Contudo, agora necessito rodar 6 programas para 38 localidades distintas e tenho feito isso ponto a ponto, para cada um dos modelos... Já rodei os programas uma vez dessa maneira trabalhosa e agora pretendo automatizar o processo lendo todos os 38 arquivos de uma só vez e rodar cada um dos modelos para os 38 arquivos (um modelo por vez).
Minha pergunta é: há alguma função para leitura de vários arquivos juntos ?
Por favor, se não ficar claro posso tentar explicar melhor! abs -- João Rodrigo de Castro Programa de Pós-Graduação em Meteorologia Bolsista Laboratório de Agrometeorologia - Embrapa Clima Temperado Universidade Federal de Pelotas
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@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.
-- Grato Augusto C. A. Ribas Site Pessoal: http://recologia.com.br/ Github: https://github.com/Squiercg Lattes: http://lattes.cnpq.br/7355685961127056
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@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.
-- João Rodrigo de Castro Programa de Pós-Graduação em Meteorologia Bolsista Laboratório de Agrometeorologia - Embrapa Clima Temperado Universidade Federal de Pelotas
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@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.
-- Grato Augusto C. A. Ribas Site Pessoal: http://recologia.com.br/ Github: https://github.com/Squiercg Lattes: http://lattes.cnpq.br/7355685961127056
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@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.
-- João Rodrigo de Castro Programa de Pós-Graduação em Meteorologia Bolsista Laboratório de Agrometeorologia - Embrapa Clima Temperado Universidade Federal de Pelotas
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@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.
_______________________________________________ R-br mailing list R-br@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.
-- Best regards, Vinícius Lionel Mateus, MSc (http://lattes.cnpq.br/6501001637020665) Chemistry PhD Student Atmospheric Chemistry Laboratory - Dep. Chemistry PUC-Rio - Pontifical Catholic University of Rio de Janeiro Marquês de São Vicente, 225, Gávea - Rio de Janeiro, RJ - Brazil CEP: 22451-900 Phone: (+45) 26 28 28 51 (+55) (21) 3527-1327 (+55) (21) 993 - 588 - 051 Skype: vinicius.lionel http://www.qui.puc-rio.br/index.html