【发布时间】:2010-10-19 18:52:21
【问题描述】:
我有一个包含 18 列和 11520 行的 data.frame (link to file),我将其转换如下:
library(plyr)
df.median<-ddply(data, .(groupname,starttime,fPhase,fCycle),
numcolwise(median), na.rm=TRUE)
根据system.time(),运行大约需要这么长时间:
user system elapsed
5.16 0.00 5.17
这个调用是 webapp 的一部分,所以运行时间非常重要。有没有办法加快调用速度?
【问题讨论】:
-
ddply()首先是方便。如果你需要快速的东西,你可能需要重新实现逻辑。 -
@Shane:目前用户可以请求的可能数据集有 3*400 个(并且每天都在增加)。一个用户不太可能与另一个用户点击相同的数据集。所以缓存只会在会话中有用。由于 webapp 的输出本质上是一个罐头报告,我认为用户通常不会多次请求它。你会为我描述的情况实施缓存吗?我以前从来没有做过,所以我有点茫然。
-
@dnagirl @Dirk 的意思是
plyr的设计主要不是为了性能,而是为了易于使用。例如,llply(大多数其他 plyr 函数的基础)比lapply慢几倍,尽管这两个函数的核心功能相同。 -
@dnagirl,另请参阅此相关问题:stackoverflow.com/questions/3685492/…
-
@dnagirl -
require(fortunes); fortune("dog")并替换为“数据” :-) 此外,为了将来参考,为save()ed R 对象使用与.R不同的扩展名。.rda常用于 R 包中。.R通常表示 R 脚本。我花了几分钟试图弄清楚data.R是什么,然后我才恍然大悟