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
<[email protected] <mailto:[email protected]>> escreveu:
Entendi Augusto, vou implementar! Muito Obrigado
Em 8 de junho de 2015 11:14, Augusto Ribas <[email protected]
<mailto:[email protected]>> 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
<[email protected] <mailto:[email protected]>>
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
<[email protected] <mailto:[email protected]>> 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
<[email protected]
<mailto:[email protected]>> 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
[email protected]
<mailto:[email protected]>
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
[email protected] <mailto:[email protected]>
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
[email protected] <mailto:[email protected]>
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
[email protected] <mailto:[email protected]>
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
[email protected] <mailto:[email protected]>
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
[email protected]
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
_______________________________________________
R-br mailing list
[email protected]
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.