[R-br] Loop para ler e trabalhar com diversos arquivos simultaneamente
Yury Duarte
yurynepomuceno em gmail.com
Quinta Novembro 17 10:42:28 BRST 2016
Olá Felipe, obrigado pela dica. Mas acredito que meu problema seja um pouco
diferente do que foi explanado no seu email. Consegui fazer com que os
arquivos fossem abertos, lidos e salvos num local diferente (a pesar de ter
feito isso num formato que funciona apenas para a minha situação, já que
preciso declarar o nome de cada arquivo dentro do diretório "entrada").
Irei colar meu script no corpo pra facilitar a abordagem da minha dúvida.
#Diretório raiz
rootDir <- 'C:\\Users\\user\\Desktop\\'
#Diretório da base de dados observados a ser lida
dataDir <- paste(rootDir,'entrada\\',sep='')
#Diretório onde escreverá os arquivos
outputloc <- paste(rootDir,'saida\\',sep='')
#nomes dos arquivos no diretorio (sem a extensao)
cidades = c("abelardoluz","aguaclara")
#vetor de latitudes, escritas na ordem correspondente as cidades acima
lat = c(-30, 0)
for (i in cidades){
estacao = i
a = read.table(paste(dataDir,estacao,'.txt',sep=''), sep = ";", header =
T); str(a)
#--------------------Separar colunas de interesse--------------------#
a$DATE = as.Date(levels(a$DATE))[a$DATE]; str(a)
a$DiaJuliano = format(a$DATE, trim = T, '%j') ; a$DiaJuliano
a$DiaJuliano = as.numeric(format(a$DATE, trim = T, '%j'));
str(a$DiaJuliano)
#--------------------Calculo das Variaves
Astronomicas--------------------#
head(a)
corr = pi/180
a$decl = 23.45*sin(corr*((a$DiaJuliano-80)*360/365)); a$decl
#----Aqui esta o problema----#
a$hn = 1/corr*acos(-tan(corr**lat[(as.numeric(length(i)))]*
)*tan(corr*a$decl))
a$N = 2*a$hn/15
head(a)
write.table(a,file=paste(outputloc,i,'.txt',sep=''),col.names=T,
row.names=F, sep="\t")
}
#--FIM DO SCRIPT--#
Minha dificuldade está em utilizar apenas a latitude correspondente a
cidade que estou abrindo no meu for().
Percebi que usando o comando length() sempre irei utilizar a ultima
latitude do objeto "lat". As vezes que inseri um for() para ler as
latitudes, cada cidade correu todas as lat informadas e também salvou
apenas a última. Assim, minha intensão é conseguir fazer com que cada
cidade utilize apenas a latitude correspondente do objeto lat.
Mais uma vez, agradeço pela colaboração de todos!
Yury Duarte
Engenheiro Agrônomo - ESALQ/USP
Em 17 de novembro de 2016 10:24, Felipe <felipe.e.barletta em gmail.com>
escreveu:
>
> Yuri, pode ler e carregar vários arquivos da seguinte maneira (e criar
> diretório):
> (Não testei com seus dados)
>
>
> ### Indica diretório que vai trabalhar
> setwd('~/caminho/')
>
> # lista todos os arquivos com extensão .csv
> input <- dir(pattern='.txt')
> L <- length(input)
>
> ### Lendo arquivos e salvando em uma lista
> dados <- NULL
> for (i in 1:L){
> dados[[i]] <- read.table(input[i],h=T)
> cat(input[i],'\n')
> }
>
>
> agora é só fazer os cálculos que deseja e depois pode crira um diretório
> para salvar
>
> ### Cria diretório
> dir.create('~/caminho/')
>
>
> --
>
> Atenciosamente,
>
>
> ==================================
> Felipe E. Barletta Mendes
> Estatístico(UFPR) - Conre3 9766-A
> Mestrando em Bioestatística(UEM)+55 (41)-92077191+55 (41)-33287216
> ===================================
>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20161117/39ddb0ad/attachment.html>
Mais detalhes sobre a lista de discussão R-br