R - 将 class 循环对象转换回数字

R - Convert objects of class circular back to numeric

我正在使用 R 中的循环包将 von Mises 分布拟合到一组数据:

Mises <- mle.vonmises(x = angle, mu = NULL, kappa = NULL, bias = FALSE, control.circular = list()) 

结果来自 class 通告。有没有办法提取 mu 和 kappa 以将它们作为数字?我需要这样做很多次(我想使用 group_by()),所以手动写下 mu 和 kappa 的显示值不是一个选项。

感谢您的帮助!

mle.vonmises 的输出是 list

> str(Mises)
List of 8
 $ call     : language mle.vonmises(x = x)
 $ mu       : 'circular' num -0.0264  # it is a numeric value
  ..- attr(*, "circularp")=List of 6
  .. ..$ type    : chr "angles"
  .. ..$ units   : chr "radians"
  .. ..$ template: chr "none"
  .. ..$ modulo  : chr "asis"
  .. ..$ zero    : num 0
  .. ..$ rotation: chr "counter"
 $ kappa    : num 5.21
 $ se.mu    : num 0.0654
 $ se.kappa : num 0.973
 $ est.mu   : num 1
 $ est.kappa: num 1
 $ bias     : logi FALSE
 - attr(*, "class")= chr "mle.vonmises"

我们可以使用标准提取器来提取 list 元素,即。 $[[。关于转换为 numericmu 已经是 numeric class.

> class(Mises$mu)
[1] "circular" "numeric" 

它还包括一些 attributes 和一个额外的 class circular 建立在 numeric 之上,可以通过用 as.numeric 包装来删除或 as.vector 或将属性设置为 NULL

as.numeric(Mises$mu)
#[1] -0.02639894
Mises$kappa
[1] 5.214254

数据

library(circular)
x <- rvonmises(n=50, mu=circular(0), kappa=5)
Mises <- mle.vonmises(x)