【发布时间】: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