【问题标题】:how to optimize looped searching in R?如何优化 R 中的循环搜索?
【发布时间】:2011-03-26 04:53:41
【问题描述】:

我正在尝试使用 R 中的循环扫描数据集,以查看数据子集中的数据点是否满足某些规则,此处粘贴示例:

loop.ward <- 1
loop.control.chart <- 1
while (loop.ward <= length(unique(control.chart[,"ward"])))
{
   loop.weekly.count <- 3
   while (loop.weekly.count <= nrow(control.chart[control.chart[,"ward"]==unique(control.chart[,"ward"])[loop.ward] ,]))
   {
      temp <- control.chart[control.chart[,"ward"]==unique(control.chart[,"ward"])[loop.ward] ,][(loop.weekly.count-2):(loop.weekly.count),]
      if (nrow(temp[temp["UWL.out"]==1,])>=2 | nrow(temp[temp["LWL.out"]==1,])>=2)
      {
         control.chart[control.chart[,"ward"]==unique(control.chart[,"ward"])[loop.ward],][(loop.weekly.count),"rules.violated"] <- 2
      }
      loop.control.chart <- loop.control.chart + 1
      loop.weekly.count <- loop.weekly.count + 1
   }
   loop.ward <- loop.ward + 1
}

代码正在做我需要的事情,但是速度很慢(我总共有大约 7000 个数据点用于所有病房(即 max(loop.control.chart) = 7000)和 4 条规则来进行扫描,我花了 10 分钟才完成一轮。

无论如何我都想不到优化它(我想到了tapply,但不知道如何实现它),有什么建议吗?

谢谢!

(还有一个小问题,这里的代码对你来说可读吗?)


更新

附上部分数据here供大家参考。

【问题讨论】:

  • -1 表示代码可读。
  • 您能解释一下您要完成的工作吗?

标签: optimization r loops


【解决方案1】:

您能否提供数据样本?很难从你给出的结构中推测出结构。我认为plyr 可能会有所帮助,但如果没有示例数据,我就不能说得更具体了。

代码不是那么可读。我理解你在做什么,但它似乎不必要地冗长。它也似乎基于您所做的一些事情,特别是 if 条件。重复代码也不少。

我并不是说要苛刻,因为我确信从您的角度来看,代码非常有意义,也许通过示例数据看起来会更清晰。

【讨论】:

  • 感谢 cmets!我已经更新了问题并附上了一个虚拟文件,谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
  • 2018-03-09
  • 2012-07-02
  • 2017-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多