[R-br] Salvar saídas de um loop

FHRB Toledo fernandohtoledo em gmail.com
Quarta Agosto 9 18:38:57 -03 2017


Yuri,

Veja se isso resolve seu problema... :

## meses
meses <- c('setembro', 'outubro', 'novembro', 'dezembro', 'janeiro',
'fevereiro', 'marco', 'abril')
names(meses) <- meses # precisam ser nomeados

## funcao que le um certo aquivo
readFile <- function(mes) read.table(paste0(mes, '/final.txt'), header =
TRUE, sep = '\t')

## carrega todos arquivos em 1 so
data_raw <- ldply(meses, readFile, .id = 'mes')

## formato longo
data_long <- melt(data_raw, id.vars = .(mes, cidades), variable.name =
'ano', value.name = 'prod')

## altera niveis de ano
levels(data_long$ano) <- 1980:2012

## uma pilha com as matrizes por cidade
stack <- dlply(data_long, .(cidades), function(set) dcast(set, mes ~ ano,
value.var = 'prod'))

Quanto a salvar cada cidade fica como desafio para você :)

2017-08-09 15:10 GMT-05:00 Yury Duarte via R-br <r-br em listas.c3sl.ufpr.br>:

> Obrigado Fernando!
>
> Vou dar uma olhada nessas sugestões, obrigado!
> Mas meu interesse é em executar a tarefa através do comando for() apenas.
> Gostaria de entender porque meu código não é reproduzível, já que forneci
> ele na íntegra, juntamente com os arquivos necessários para alimenta-lo.
>
> Att
>
> Yury Duarte
> Engenheiro Agrônomo - ESALQ/USP
>
> Em 9 de agosto de 2017 16:57, Fernando Antonio de souza <
> nandodesouza em gmail.com> escreveu:
>
>> Ah! Seu código não é reproduzível. Envie um código reproduzível para que
>> possa receber ajuda.
>>
>> att
>>
>> =========================================
>> Fernando Souza
>> Celular: (31)99796-8781 (Vivo)
>> E-mail:nandodesouza em gmail.com
>> <https://n1.nylas.com/link/66b42e4442df0088d872a1d9c4d8cd0c6a355e9f14bbcd0269aedb5ea05af171/0?redirect=mailto%3Ae-mail%253Anandodesouza%40gmail.com&recipient=yurynepomuceno%40gmail.com>
>> ==========================================
>>
>> On Ago 9 2017, at 4:48 pm, Yury Duarte via R-br <r-br em listas.c3sl.ufpr.br>
>> wrote:
>>
>>> Boa tarde colegas listeiros!
>>>
>>> Estou tendo um pequeno problema para salvar as saídas de um loop que fiz
>>> para preencher uma matriz com dados de diferentes arquivos. Meus arquivos
>>> base possuem informações anuais de produtividade (colunas) de 15 locais
>>> (linhas) para um determinado mês. Construí o loop com intenção de gerar um
>>> arquivo por local, contemplando as produtividades de cada mês (nas linhas)
>>> e de cada ano (nas colunas). Conferi o output do único arquivo salvo pelo
>>> script e os valores correspondem ao arranjo desejado, então acredito que a
>>> lógica para o preenchimento da matriz esteja correta. Os arquivos para
>>> executar a simulação estão em anexo e o script está no corpo do email.
>>>
>>> Desde já, agradeço pela colaboração de todos!
>>>
>>> rm(list = ls())
>>>
>>> raiz = 'C:\\Users\\Yury\\Desktop\\Mestrado\\1_TESE\\Model_Data\\Mai
>>> ze\\PREVISAO\\PA\\'
>>>
>>> estrategia = c('E1', 'E2', 'E3', 'E4', 'E5')
>>> meses = c('setembro', 'outubro', 'novembro', 'dezembro', 'janeiro',
>>> 'fevereiro', 'marco', 'abril')
>>> cidade = c("abelardoluz", "altamira", "brasilia", "caarapo", "catalao",
>>> "lagarto", "machado", "mateiros",
>>>            "muitoscapoes", "piracicaba", "pontagrossa",
>>> "primaveradoleste", "srmangab", "sdesiderio", "urucui")
>>> anos = c(1980:2012)
>>> previsao = matrix(NA, nrow = length(meses), ncol = length(1980:2012))
>>> colnames(previsao) = 1980:2012
>>>
>>> #for(e in 1:length(estrategias)){
>>>
>>>   for(m in 1:length(meses)){
>>>
>>>     a = read.table(paste0(raiz, 'E1\\', meses[m],'\\', 'final.txt'),
>>> header = T, sep = '\t')
>>>     for(city in 1:length(cidade)){
>>>
>>>       for(i in 1:length(anos)){
>>>
>>>         previsao[m,i] = a[city,i]
>>>       }
>>>     }
>>>     write.table(previsao, paste0(raiz, 'E1\\', cidade[city],'.txt'),
>>> row.names = F, col.names = T, sep = '\t')
>>>   }
>>> #}
>>>
>>> Yury Duarte
>>> Engenheiro Agrônomo - ESALQ/USP
>>>
>>> _______________________________________________
>>> R-br mailing listR-br em listas.c3sl.ufpr.brhttps://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 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/20170809/c07fa35d/attachment.html>


Mais detalhes sobre a lista de discussão R-br