全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1286 1
2018-01-14
for(i in 1:length(factor[,1]))
{
  #进度条代码
  info<- sprintf("已完成 %d%%", round(i*100/u))
  setTkProgressBar(pb, i*100/u, sprintf("进度 (%s)", info),info)  
  #进度条代码


  #用j来保存复权因子与股票池中相同股票代码的下标
  j=which(factor[i,1]==names(stock_data))
for(k in 2:length(names(factor)))
{
  #用l来保存复权因子与股票池中相同日期的下标
  l=which(as.numeric(names(factor)[k])==stock_data[[j]][,1])


  #备选方案1:利用apply函数
  apply(stock_data[[j]][l,3:6],2,fun1,y=factor[j,k])
  stock_data[[j]][l,7]=stock_data[[j]][l,7]/factor[j,k]


  #备选方案2:直接运算
  #stock_data[[j]][l,3:6]=stock_data[[j]][l,3:6]*factor[j,k]/10000
  #stock_data[[j]][l,7]=stock_data[[j]][l,7]/factor[j,k]


  #每次循环之后均清楚内存,释放空间
  gc()
}
}


代码如上,双重循环大约有3000*800次循环,尝试了运用apply,但是速度仍然很慢,有没有办法加快数据读取?是否与list中每个变量为data.frame有关而导致速度很慢?求解!感激不尽!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-1-15 07:57:47
能不能给一小组数据(能够运行你代码的最小数据集)来说明一下。
另外,我一般在下数据时就把复权后的收盘价一同下载,作为转换的参照。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群