【发布时间】:2018-04-16 19:47:57
【问题描述】:
dataset <- matrix(rnorm(100), 20, 5)
我的数据集是一个包含 100 个回报的矩阵,包含 20 天的 5 个资产。 我想计算每项资产的平均回报,介于 1:10 行和 11:20 行之间。 然后,我想将这样计算的返回值包含在两个向量中,然后又包含在一个列表中。
以下列表应包括在行 1:10 和 11:20 之间计算的两个返回向量。
returns <- vector(mode="list", 2)
我已经实现了一个 for 循环,如下所述,仅计算 1:10 之间的回报平均值。
assets <- 5
r <- rep(0, assets) # this vector should include the returns over 1:10
for(i in 1:assets){
r[i] <- mean(data[1:10,i])
}
returns[[1]] <- r
我如何管理这个 for 循环以计算 11:20 行之间的平均回报?
我尝试通过以下方式“索引”数据集的行。
time <- c(1, 10, 11, 20)
然后实现一个双for循环,但是长度不同。此外,在这种情况下,我在管理向量“r”时遇到了困难。因为,在这种情况下,我应该有两个向量,而不再像以前那样只有一个。
for(j 1:length(time){
for(i in 1:assets){
r[i] <- mean(data[1:10,i])
}}
returns[[1]] <- r
【问题讨论】:
-
成功了吗?您需要带循环的解决方案吗?
-
是的,它有效!谢谢您的回答。如果没有问题,我还想看看带有 for 循环的代码。
-
因为这里有一个更简单的例子,但在我的数据集中我有更多的行。所以,我也对 for 循环感兴趣。 @RafaelC
-
刚刚编辑了我的答案!看看:)