[R-br] Salvar saídas de um loop
Yury Duarte
yurynepomuceno em gmail.com
Quinta Agosto 10 15:10:33 -03 2017
Aos interessados, segue solução do problema utilizando a função for().
Att
rm(list = ls())
raiz =
'C:\\Users\\Yury\\Desktop\\Mestrado\\1_TESE\\Model_Data\\Maize\\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(city in 1:length(cidade)){
for(m in 1:length(meses)){
a = read.table(paste0(raiz, 'E1\\', meses[m],'\\', 'final.txt'), header
= T, sep = '\t')
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
Em 10 de agosto de 2017 14:34, Yury Duarte <yurynepomuceno em gmail.com>
escreveu:
> Fernando,
>
> testei seu código e não consigo fazer com que a função ldply funcione
> (could not find function "ldply").
> Pelo que busquei na literatura, não necessito de nenhum pacote adicional
> para fazer essa função rodar. Também estou usando a versão mais atual do R,
> então não acredito que possa ser um problema de versão.
> Se tiver alguma ideia do porque isso possa estar ocorrendo, tenho
> interesse em ouvir.
>
> Mais uma vez, agradeço a colaboração de todos!
>
> Att
>
> Yury Duarte
> Engenheiro Agrônomo - ESALQ/USP
>
> Em 9 de agosto de 2017 18:38, FHRB Toledo <fernandohtoledo em gmail.com>
> escreveu:
>
>> 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/20170810/5bc52249/attachment.html>
Mais detalhes sobre a lista de discussão R-br