[R-br] Uso do laço for para impessão de mais de um arquivo gerado.

Luis G. S. e Silva lgsilvaesilva em gmail.com
Sexta Março 13 09:50:00 BRT 2015


Michelle,

Essa tarefa pode ser realizada eliminado os loops (for) e algumas linha
também.
Dá uma olhadinha no script abaixo.

Abraço

symbol<-c("XOM","AAPL", "DIS")

getCSV <- function(symbol){
  URL <- paste0("http://chartapi.finance.yahoo.com/instrument/1.0/",
symbol, "/chartdata;type=quote;range=1d/csv")
  tab <- read.table(URL, sep = ",", dec = ".", skip = 17)
  colnames(tab) <-
paste(c("timestamp","close","high","low","open","volume"), 1:6, sep = "-")
  rownames(tab) <- paste(symbol, 1:nrow(tab))
  SAIDA <- paste0("Dados",symbol,"yahoo20150312.txt")
  write.table(tab, file = SAIDA, sep = ";", dec = ".", header = T)
}

sapply(symbol, getCSV)

2015-03-13 9:34 GMT-03:00 Michelle Bau Graczyk <mbgraczyk em gmail.com>:

> Oi Augusto!
>
> Deu certo! Foi puro descuido mesmo com o symbols e o symbol!
>
> Muito obrigada!!
>
> Em 13 de março de 2015 09:00, Augusto Ribas <ribas.aca em gmail.com>
> escreveu:
>
> Ignore meu comentário anterior, não tinha olhado a identação direito.
>>
>> symbols<-c("XOM","AAPL", "DIS")
>> for(i in 1:length(symbols)){
>>     symbol <- symbols[i]
>>     URL <- paste0("http://chartapi.finance.yahoo.com/instrument/1.0/",
>>               symbol, "/chartdata;type=quote;range=1d/csv")
>>     tmp <- readLines(URL)
>>     tabela<-tmp[18:length(tmp)]
>>     tabela_split<-strsplit(tabela,",")
>>     # matriz para receber os dados
>>
>> dados<-matrix(NA,ncol=length(tabela_split[[1]]),nrow=length(tabela_split))
>>     for(j in 1:length(tabela_split)) {
>>         dados[j,]<-as.numeric(tabela_split[[j]])
>>     }
>>     # organizar os nomes de colunas linhas
>>     dimnames(dados)<-list(paste(symbol,1:length(tabela_split)),
>>
>> paste(c("timestamp","close","high","low","open","volume"),
>>                                 1:length(tabela_split[[1]])))
>>     SAIDA<-paste0("Dados",symbol,"yahoo20150312.txt")
>>     write.table(dados,file= SAIDA)
>>     }
>>
>> Mas seu codigo funcionou aqui, so mudei o começo ali
>>
>> symbol<-c("XOM","AAPL", "DIS")
>> for(i in seq_along(symbols)){
>>
>>   symbol <- symbols[i]
>>
>>
>> vc criava um vetor symbol e fazia o for no symbols.
>> Mas rodando ali em cima ele criou certinho as três planilhas.
>>
>>
>> Em 13 de março de 2015 07:51, Augusto Ribas <ribas.aca em gmail.com>
>> escreveu:
>>
>> Imagino que você está salvando tudo mas sobrepondo os dados, salve com
>>> nomes de arquivos diferentes, por exemplo no final do seu script tente algo
>>> assim
>>>
>>>
>>> write.table(dados,file= paste0("SAIDA_",i,".txt"))
>>>
>>>
>>> Assim, você vai salvar um
>>> SAIDA_XOM.txt
>>> SAIDA_AAPL.txt
>>> SAIDA_DIS.txt
>>>
>>>
>>> E assim vai.
>>>
>>> Agora eu acho que você salva o XOM em SAIDA, depois salva por cima os
>>> dados do AAPL no SAIDA, depois salva por cima os dados do DIS
>>>
>>> a função write.table sempre salva no mesmo lugar, o file= a mesma coisa
>>> sempre.
>>>
>>> Em 12 de março de 2015 17:51, Michelle Bau Graczyk <mbgraczyk em gmail.com>
>>> escreveu:
>>>
>>>> Boa noite,
>>>>
>>>> Com ajuda de colegas do grupo montei um programa para pegar dados do
>>>> yahoo e organiza-los. Porém, eu preciso pegar para vårias empresas e por
>>>> isso fiz um laço com o uso da função for para imprimir a saida. Porem, eu
>>>> não estou conseguindo fazer com que ele imprima todos e sim, somente o
>>>> ultimo elemento. No caso abaixo, ele só imprime e salva o arquivo referente
>>>> a empresa DIS enquanto eu também quero das outras.
>>>> Já tentei colocar o write.table no final da última chaves mas também
>>>> não imprimiu de todos os arquivos.
>>>>
>>>> Muito obrigada!
>>>>
>>>> Michelle
>>>>
>>>>
>>>> symbol<-c("XOM","AAPL", "DIS")
>>>> for(i in seq_along(symbols)){
>>>>
>>>>   symbol <- symbols[i]
>>>>
>>>> URL <- paste0("http://chartapi.finance.yahoo.com/instrument/1.0/",
>>>>               symbol, "/chartdata;type=quote;range=1d/csv")
>>>>
>>>> tmp <- readLines(URL)
>>>>
>>>> tabela<-tmp[18:length(tmp)]
>>>>
>>>> tabela_split<-strsplit(tabela,",")
>>>>
>>>> # matriz para receber os dados
>>>>
>>>> dados<-matrix(NA,ncol=length(tabela_split[[1]]),nrow=length(tabela_split))
>>>>
>>>>
>>>> for(j in 1:length(tabela_split)) {
>>>>   dados[j,]<-as.numeric(tabela_split[[j]])
>>>> }
>>>>
>>>>
>>>> # organizar os nomes de colunas linhas
>>>>
>>>> dimnames(dados)<-list(paste(symbol,1:length(tabela_split)),paste(c("timestamp","close","high","low","open","volume"),1:length(tabela_split[[1]])))
>>>>
>>>> SAIDA<-paste0("Dados",symbol,"yahoo20150312.txt")
>>>>
>>>> write.table(dados,file= SAIDA)
>>>>
>>>> }
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> 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.
>>>>
>>>
>>>
>>>
>>> --
>>> Grato
>>> Augusto C. A. Ribas
>>>
>>> Site Pessoal: http://recologia.com.br/
>>> <http://augustoribas.heliohost.org>
>>> Github: https://github.com/Squiercg
>>> Lattes: http://lattes.cnpq.br/7355685961127056
>>>
>>
>>
>>
>> --
>> Grato
>> Augusto C. A. Ribas
>>
>> Site Pessoal: http://recologia.com.br/
>> <http://augustoribas.heliohost.org>
>> Github: https://github.com/Squiercg
>> Lattes: http://lattes.cnpq.br/7355685961127056
>>
>> _______________________________________________
>> 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.
>>
>
>
> _______________________________________________
> 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.
>



-- 
Luís Gustavo Silva e Silva
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20150313/07eefa28/attachment.html>


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