R中的简单FOR循环,但每次使用不同的输入

ttcibm8c  于 2023-10-13  发布在  其他
关注(0)|答案(1)|浏览(84)

我想做一个FOR循环,对于变量SP的每个元素(每次从0到1,间隔为0.05),循环应该通过每次将SP内的下一个数字作为输入来计算函数“epo”。
一旦完成,我想把这个结果存储在一个矩阵中,以跟踪每一次计算。
这是我使用的代码

library(epo)
# INPUTS
x <- diff(log(EuStockMarkets))
s <- colMeans(x) 
SP = seq(from = 0, to = 1, by = 0.05) 

epo_result = epo(x = x, signal = s, lambda = 10, method = "simple", w = SP)

df           # --> matrix to be filled

这是我尝试过的,但我是一个初学者在循环方面,所以是不工作

for(i in 1:ncol(t(SP))){
  SP[i]= seq(from = 0, to = 1, by = 0.05)
  epo_result [i] = epo(x = x, signal = s, lambda = 10, method = "simple", w=SP[i] )
  df[i] <- c(epo_result [i])
}
vnjpjtjt

vnjpjtjt1#

您可以使用lapply()在SP上进行重命名。

library(epo)
# INPUTS
x <- diff(log(EuStockMarkets))
s <- colMeans(x)
SP = seq(from = 0, to = 1, by = 0.05)

lapply(SP,
    \(y) epo(
      x = x,
      signal = s,
      lambda = 10,
      method = "simple",
      w = y
    ))
#> [[1]]
#> [1]  0.1914569  0.9894828 -0.3681779  0.1872382
#> 
#> [[2]]
#> [1]  0.1959965  0.9273004 -0.3106722  0.1873753
#> 
#> [[3]]
#> [1]  0.2003423  0.8709236 -0.2604761  0.1892102
#> 
#> [[4]]
#> [1]  0.2043519  0.8197200 -0.2162345  0.1921626
#> 
#> [[5]]
#> [1]  0.2079896  0.7730973 -0.1769264  0.1958395
#> 
#> [[6]]
#> [1]  0.2112650  0.7305240 -0.1417607  0.1999716
#> 
#> [[7]]
#> [1]  0.2142059  0.6915329 -0.1101109  0.2043721
#> 
#> [[8]]
#> [1]  0.21684572  0.65571644 -0.08147315  0.20891099
#> 
#> [[9]]
#> [1]  0.21921795  0.62272107 -0.05543656  0.21349754
#> 
#> [[10]]
#> [1]  0.22135393  0.59223977 -0.03166225  0.21806855
#> 
#> [[11]]
#> [1]  0.223281853  0.564005906 -0.009868083  0.222580324
#> 
#> [[12]]
#> [1] 0.22502659 0.53778739 0.01018293 0.22700308
#> 
#> [[13]]
#> [1] 0.22660990 0.51338173 0.02869136 0.23131702
#> 
#> [[14]]
#> [1] 0.2280507 0.4906117 0.0458281 0.2355095
#> 
#> [[15]]
#> [1] 0.22936542 0.46932171 0.06173975 0.23957312
#> 
#> [[16]]
#> [1] 0.23056830 0.44937484 0.07655273 0.24350413
#> 
#> [[17]]
#> [1] 0.23167171 0.43065009 0.09037668 0.24730152
#> 
#> [[18]]
#> [1] 0.2326864 0.4130403 0.1033071 0.2509662
#> 
#> [[19]]
#> [1] 0.2336218 0.3964502 0.1154277 0.2545003
#> 
#> [[20]]
#> [1] 0.2344860 0.3807949 0.1268120 0.2579070
#> 
#> [[21]]
#> [1] 0.2352863 0.3659986 0.1375249 0.2611902

相关问题