Как написать цикл, который создает объекты TS и сохраняет их отдельно как таковой? - PullRequest
0 голосов
/ 22 марта 2019

Я анализирую данные временных рядов эффективности использования биомассы / дождя растений. У меня есть набор данных с переменной отклика и несколькими факторами (интенсивность выпаса), а также копии для каждого фактора (4 фактора, 5 или 7 повторов). Мне нужно создать объекты временных рядов из каждого отдельного набора данных, который включает в себя годовые данные с 1981 по 2007 год. У меня есть 24 индивидуальных оценки различных графиков за это время.

Я пытаюсь написать цикл для этого, но с треском проваливаюсь.

Набор данных называется dat. PMR6yrs - это переменная ответа. 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)
}

Может ли кто-нибудь помочь? спасибо см

1 Ответ

0 голосов
/ 22 марта 2019

Трудно понять, в чем проблема вашего кода (обычно приятно иметь данные, чтобы мы могли воспроизвести проблему). Но вам не нужно привязываться к объекту 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

...