Я хочу вычислить средний угол в радианах (тета) из ряда углов (бета), которые хранятся в кадре данных, называемом «а»:
time beta theta theta2
1 0 na na
2 2.426551575 na na
3 5.890842799 0.678069689 0.678069689
4 0.530641823 0.854950297 0.854950297
5 4.794960386 -0.449975202 5.833210105
6 1.271620156 0.104679019 0.104679019
7 5.789548201 -0.236747291 6.046438017
8 1.053579352 0.610520801 0.610520801
9 0.095112206 0.218351484 0.218351484
10 6.108843722 0.324783324 0.324783324
бета-версии в радианах игенерируются как случайный рисунок из обернутого неуклюжего распределения.Я хочу вычислить тэты (на самом деле тэта2, в радианах).Я сделал это грубой силой, преобразовав радианы в положительные и отрицательные единицы с пи / -пи на 180 градусов, но искал более элегантный подход.
Я надеялся, что это сработает (используя как круговые, так ипакеты dplyr):
a$theta<-mean.circular(c(a$beta,lag(a$beta),lag(a$beta,2))
Но это только возвращает последнее значение беты.Я попытался установить подмножество, а также в цикле (у меня есть другое поле, называемое временем, которое является возрастающим целым числом)
time beta
1 0
2 2.426551575
3 5.890842799
4 0.530641823
5 4.794960386
6 1.271620156
7 5.789548201
8 1.053579352
9 0.095112206
10 6.108843722
theta<-0
bset<-c(0,0,0)
for (i in time){
bset<-ifelse(i<3,bset,df$beta[(i-2):i])
thetai<-mean.circular(bset)
theta<-c(theta,ifelse(is.na(thetai),0,thetai))
theta<-theta[2:(length(time)+1)]
df<-cbind(df,theta)
}
Но это также не работает.Может кто-нибудь сказать мне, что я делаю не так?