循环遍历列表

时间:2016-03-19 16:54:51

标签: r loops yahoo-finance

我有一个通过函数传递的数千个股票代码的列表。但是,该功能一次只能接受200个或更少的符号。如何设置循环以传递200个符号的块,直到列表完成。下面是一些松散的结构我觉得它可能看起来像。当我通过手动缩短的shortsymb时,该功能起作用,但我需要自动化这个过程,以便它可以迭代。

library(quantmod)
symbols<-read.csv("companylist.csv")

for(i in 1:end){
  for(i in 1:200)

      metrics <- getQuote(paste(symbols sep="", collapse=";"), what=what_metrics)
}}

shortsymb<-symbols[1:199,]

1 个答案:

答案 0 :(得分:0)

这是一个可能的快速解决方案:

nSym <- nrow(symbols)
chunkSize <- 200
for(i in 1:ceiling(nSym / chunkSize)){  
  shortsymb<-symbols[((i-1)*chunkSize+1):min(nSym,(i*chunkSize)),] }
  # do what you need with shortsymb
}

代码说明:

  • 通过简单地除以nSym / chunkSize来计算块数(我们采用上限,因为如果nSym不是chunkSize的倍数,则可以有余数)
  • 对于每个块(1,2,...,n),我们计算相应的起始和结束行索引,因为start = ((i-1)*chunkSize+1)end = min(nSym,(i*chunkSize))min函数是必需的,因为上一个块可能小于{ {1}})
  • 我们使用索引对原始chunkSize
  • 进行子集化
相关问题