【发布时间】:2020-04-01 10:37:03
【问题描述】:
我发布了关于上一个问题的后续问题。从这段代码中,我想要创建一个包含这种格式数据的向量列表: l3 [[1]] [1] v1 v2 v3 v4
[[2]] [1] w1 w2 w3 w4
[[3]] [1] z1 z2 z3 z4
但我得到的是这样的:似乎它在列表中不断重复元素。 打印(l3)
[[1]] [1] 100.00000 99.45692 98.91680 98.37960 101.04577 100.49701 99.95124 99.06635 98.52834 97.99326 100.14615 99.60228 99.06137
[[2]] [1] 100.00000 99.45692 98.91680 98.37960 101.04577 100.49701 99.95124 99.06635 98.52834 97.99326 100.14615 99.60228 99.06137 [14] 99.99692 99.45386 98.91375 99.15577 98.61728 98.08171 98.73635 98.20013 97.66683 99.45615 98.91603 98.37884
[[3]] [1] 100.00000 99.45692 98.91680 98.37960 101.04577 100.49701 99.95124 99.06635 98.52834 97.99326 100.14615 99.60228 99.06137 [14] 99.99692 99.45386 98.91375 99.15577 98.61728 98.08171 98.73635 98.20013 97.66683 99.45615 98.91603 98.37884 100.71692 [27] 100.16995 99.62595 96.63577 96.11096 95.58901 98.29635 97.76252 97.23160 98.53615 98.00103 97.46881
我不知道如何使它工作。任何人回复或评论总是很感激。
ml<-list(c(-0.00543076923076923, 0.0104576923076923, -0.00933653846153846,
0.00146153846153846),
c(-3.07692307692302e-05, -0.00844230769230769, -0.0126365384615385,
-0.00543846153846154),
c(0.00716923076923077, -0.0336423076923077, -0.0170365384615385,
-0.0146384615384615))
f2<-function(x) x+1
l2<-lapply(ml,f2)
l2
l3 <- vector("list", 3)
g<-c(100)
for(i in 1:3){
for(j in 1:4){
k=2
while(k<= 4){
g<- c(g, (g[k-1]*l2[[i]][j]))
l3[[i]]<- g
k<-k+1
}
}
}
打印(l3)
【问题讨论】:
-
我不清楚您的代码要完成什么。你能举个例子说明
l2和l3应该是什么样子吗?为什么选择1:3代表i和1:4代表j并从k=2开始?我不了解您的代码的意图,因此很难弄清楚您的预期行为与观察到的行为有何不同。 -
l2 只是将 ml 的值转换为计算 ml 中 3 个不同向量的 g 索引。 l3 应该为 ml 中的每个向量内的每个案例生成 g 索引。 g 指数的计算公式为:g(t)=g(t-1)*(1+excess return(t))。超额收益请参阅此处的 ml 列表。每个输出向量(列表)中的第一个值应以 g1=100 开头。 g 是一个指数,用于比较投资组合在 2 资产中不同投资权重的相对回报
标签: r list loops while-loop