【发布时间】:2015-09-15 07:27:45
【问题描述】:
我有 100 个矩阵,每个矩阵有 604800 列和 101 行。 对于每个矩阵,我需要通过计算 10 列的平均值将列数减少到 60480。
例如,对于一个向量
c(1,2,3,4,5,6,7,8,9,10,...)
5 列的平均值为:
c(3,8,13,18,...)
我用来执行此操作的代码是:
col.av = tapply(col, rep(1:(length(col)/10), each = 10), mean)
col 是我的 101 x 604800 矩阵之一。我有一个 for 循环,它遍历 100 个矩阵,但我的问题是计算一次运行所需的时间长度。
如果我只使用一个矩阵,执行需要 20 分钟以上,这是不可行的。 关于如何提高计算速度有什么建议吗?
谢谢
【问题讨论】:
-
@zx8754 不确定它是否适用于此。 OP 想要
mean(c1, c2, c3, c4, c5),然后是mean(c6,c7,c8,c9,10)。 -
总是显示你的代码,可能只是 for 循环是答案,但你犯了一个错误。
-
data.table(x=col, id=rep(1:(length(col)/10), each = 10))[,mean(x),id]col=sample(1:10, 604800*101, TRUE)花费不到一秒 -
@Khashaa 但是
col不是矩阵,对吧?
标签: r performance runtime tapply