我正在分析植物生物量/雨水利用效率的时间序列数据。我有一个带有响应变量和几个因素(放牧强度)的数据集,以及每个因素的重复(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
发布于 2019-03-22 19:22:31
很难看出你的代码有什么问题(通常有数据很好,这样我们就可以重现问题)。但是您不需要绑定到对象tsPMR吗
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 )您还可以在循环中添加赋值语句-这将为循环的每次迭代创建24个不同的对象
assign ( paste0("tsPMR6", i ) , tsPMR6) @nicola -是对的,你应该避免赋值。对循环所做的编辑应该会修复rbind问题
https://stackoverflow.com/questions/55298402
复制相似问题