【发布时间】:2016-08-14 22:09:21
【问题描述】:
我正在运行我拥有的一段旧 R 代码,并将其作为一个学习练习更有效地运行。
我有一个矩阵,它有 366 行,代表一年中的每一天 (probMatrix)。 我有另一个有 7 行,代表一周中的每一天(从星期一开始)。这两个矩阵都有 10 列。
第二个矩阵包含一周中每一天的布尔值,我想在相关元素处乘以第一个矩阵(按行)。
最后,因为星期一直到 2016 年的第四天才出现,所以第二个矩阵需要偏移四,以便乘以正确的天数。
我最初有一个 for 循环,它每天迭代并使用包含对应于一周第一天的第一个矩阵的相关索引的向量扫描概率矩阵:
probMatrix <- matrix(rep((rep(1,366)), 10), ncol=10,byrow=TRUE)
booleanMatrix <- matrix(rep(c(0,0,0,0,1), 14), ncol=10, byrow=FALSE)
for (day in 1:7){
actualDay <- (day+3)
dayIndex <- c(seq(actualDay,366,7))
probMatrix[dayIndex,] <- sweep(probMatrix[dayIndex,],2,
as.numeric(booleanMatrix[day,]),"*")
}
但是,正如我上面提到的,这是一种非常低效的方法。我想要一些运行速度更快的东西,因为这种代码在脚本中运行很多。
【问题讨论】:
-
你能分享一个minimal, reproducible example吗?
-
嗨,sayaa,抱歉,我已经提供了一个矩阵设置示例。
标签: r performance loops matrix