r - 向量化 R 代码,已使用序列符号

标签 r vectorization

我正在努力编写快速代码来计算以下向量的函数:

enter image description here

目前我使用 for 循环对其进行编码,速度非常慢:

rho <- 0.9
E_D <- numeric(100)
E_D[1] <- 1
for (t in 2:100){
  summm <- sum(cumsum(0.9^(0:(t-2)))^2)
  E_D[t] <- t+exp(summm)
}

summm是我在上图中解析定义的向量的元素。 E_D 是一个向量,它是该向量的某个函数。如果我将最大 t 设置为 5000,则上面的代码在我的机器上运行超过 1 秒,这对于我的目的来说太慢了。

我尝试了data.table解决方案,但它无法容纳单元格内的中间向量输出:

tempdt <- data.table(prd=2:100 ,summm=0)
tempdt[, summm:=sum(cumsum(rho^(0:(prd-2)))^2)]
Warning message:
In 0:(prd - 2) : numerical expression has 99 elements: only the first used

如何让上面的代码更快?请不要告诉我我必须在 Matlab 中完成...

编辑:为了澄清,我需要计算以下向量:

enter image description here

最佳答案

也许是这样的:

n <- 100L
cp <- cumprod(rep(0.9, n - 1L)) / 0.9
cssq <- cumsum(cp)^2
cumsum(cssq)

截断的输出:

[1]    1.00000    4.61000   11.95410   23.78082   40.55067   62.50542   89.72283  122.15959 ...

关于r - 向量化 R 代码,已使用序列符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61860337/

相关文章:

r - 'qbeta' 中可能未实现全精度

R 通过对前 n 个最近日期进行子集化来转换日期表

r - makePSOCKcluster(names = spec, ...) 错误 : Cluster setup failed. 3 个工作人员中的 3 个无法连接

python - 如何矢量化 numpy 数组的 2x2 子数组的平均值?

java - JRI 的问题

r - 如何为成对的 TukeyHSD 生成紧凑的字母显示

Matlab reshape 回原始图像

matlab - 如何在matlab中优化嵌套for循环

r - 用于 R 中两个数据集之间计算的 for 循环矢量化

python - 以矢量化方式连接给定开始、结束数字的范围数组 - NumPy