【发布时间】:2021-04-12 09:21:48
【问题描述】:
我有以下工作代码:
x <- c(10.7, 13.0, 11.4, 11.5, 12.5, 14.1, 14.8, 14.1, 12.6, 16.0, 11.7, 10.6,
10.0, 11.4, 7.9, 9.5, 8.0, 11.8, 10.5, 11.2, 9.2, 10.1, 10.4, 10.5)
cusum <- function(x) {
s <- NA
mn <- mean(x)
for (i in seq_along(x)) {
if (i == 1)
s[i] <- 0 + x[i] - mn
else
s[i] <- s[i - 1] + x[i] - mn
}
s
}
cusum(x)
我希望对我的代码进行矢量化以提高性能,但我不知道如何,因为:
- 我不能在
lapply和其他人中使用“迭代依赖”(即s[i - 1]来计算s[i])。 - 我无法遍历
Reduce中的两个向量(即s和x)
如何在基础 R 中矢量化我的函数?我在一个限制性的环境中工作,我只能访问基础 R。
【问题讨论】:
标签: r for-loop vectorization lapply reduce