gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 20:13:17 26 4
gpt4 key购买 nike

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

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com