我想用x的数据按照一定的顺序来填充test:
x = matrix(rnorm(330),165,2)
origins = 130:157
horizon = 8
col = 1:2
test = array(0, c(length(origins)*length(col), horizon))
for( origin in origins){
for (c in col){
test[which(origin==origins), ] = x[(origin+1):(origin+8), c]
}
}但是,此代码仅帮助提取x的第二列,以填充测试的前28行。下图只是完整测试表的一部分,显示了从第29行到第56行的无效填充。enter image description here
有谁能帮我把它们完整地填好吗?非常感谢。
发布于 2017-08-06 09:25:04
这是一个可能的解决方案,但仍然不清楚您想要的结果是什么。最好制作更小的数据并显示所需的结果。
在原始代码中,赋值的左侧不随c变化,因此每次通过C的循环时,测试的相同行将被重写,
x = matrix(rnorm(330),165,2)
origins = 130:157
horizon = 8
col = 1:2
test = array(0, c(length(origins)*length(col), horizon))
for( origin in origins){
for (c in col){
# the left hand side must vary somehow with c as well.
test[(which(origin==origins)-1) + (c - 1) * length(origins) + 1, ] = x[(origin+1):(origin+8), c]
}
}https://stackoverflow.com/questions/45526112
复制相似问题