Loop para ler e trabalhar com diversos arquivos simultaneamente

Bom dia, colegas programadores!! Estive trabalhando num script que tem a finalidade de ler diversos arquivos de um diretório especifico, fazer cálculos/modificações nesses arquivos e salvar uma saída num novo diretório. Acredito que meu problema seja bem simples de ser resolvido. Quero que, para cada file de cidade aberto dentro do for, seja usada a latitude dessa cidade em especifico, e apenas essa. As estruturas que tentei até o momento ou utilizam apenas a primeira latitude informada no vetor correspondente ou utilizam todas elas, mas salvam apenas a última. O ultimo script que usei e os arquivos base seguem em anexo, para que possam ser reproduzidos pelos Srs. Desde já agradeço pela colaboração! Att Yury Duarte Engenheiro Agrônomo - ESALQ/USP

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 ===================================

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@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 ===================================
participantes (2)
-
Felipe
-
Yury Duarte