如何编写一个创建ts对象并将其单独存储的循环?

时间:2019-03-22 11:12:20

标签: r loops time-series

我正在分析植物生物量/雨水利用效率的时间序列数据。我有一个包含响应变量和几个因子(放牧强度)的数据集,以及每个因子的重复数据(4个因子,5或7个重复数据)。 我需要从包含1981年到2007年的年度数据的每个单独数据集中创建时间序列对象。在这段时间内,我对不同地块进行了24次单独评估。

我试图为此编写一个循环,但失败了。

数据集称为dat。 PMR6yrs是响应变量。 ID是复制的ID。 它最终以某种方式仅返回一个ts对象,因此我认为问题在于存储它们。

到目前为止,我尝试过的是:

tsPMR<- NULL
for (i in 1:24) {
tsPMR6<- ts(dat$PMR_6yrs[dat$ID == i],
start = c(1981), end = c(2007), frequency = 1)
ts<-rbind(tsPMR, tsPMR6)
}

有人可以协助吗?谢谢sm

1 个答案:

答案 0 :(得分:0)

很难看到代码中的问题(通常很高兴有数据,以便我们重现该问题)。但是您不需要绑定到对象tsPMR

<div style="display:flex;justify-content:space-between;">
 <div style="display:inline-block;"><!-- this will contain single column-->
<div style="position:fixed;top:0px;left:0px;">
Col1
</div>

您还可以在循环中添加一个assign语句-该语句将为循环的每次迭代创建24个不同的对象

tsPMR<- NULL
for (i in 1:24) {
tsPMR6<- ts(dat$PMR_6yrs[dat$ID == i],
start = c(1981), end = c(2007), frequency = 1)
tsPMR<-rbind(tsPMR, tsPMR6)
}

print( tsPMR )

@nicola-是的,您应该避免分配。对循环进行的修改应该可以解决您的rbind问题