在R中使用%^%运算符

时间:2018-05-31 07:50:48

标签: r operators

关于执行马尔可夫链预测,从参考矩阵运算中我遇到了%^%运算符。以前我们知道%*%运算符会为矩阵中的每个元素返回乘法,但是当使用%^%时它应返回什么以及如何执行它,因为它返回错误。

低于以下条件:

ra <- matrix(c(.66, .23, .11, .46, .31, .23, .20, .31, .49), 
             nrow = 3, byrow = T) %>%
  as.data.frame()
ColumnNames  <- c("No Rain", "Light Rain", "Heavy Rain")
RowNames <- c("No Rain", "Light Rain", "Heavy Rain")
colnames(ra) <- ColumnNames
rownames(ra) <- RowNames

        No Rain Light Rain Heavy Rain
    No Rain       0.66       0.23       0.11
    Light Rain    0.46       0.31       0.23
    Heavy Rain    0.20       0.31       0.49

然后将执行它以预测第二天,也许我们应该首先,

ra2 <- ra %^% 2

但它返回错误。请任何可以提供帮助的人。很感谢。

3 个答案:

答案 0 :(得分:1)

我假设您是从%*%运算符推断出来的。 https://www.statmethods.net/advstats/matrix.html这可能会对您的问题有所帮助。 但是,默认情况下%^%不存在,但是有一个包。请在此处查看此问题https://stats.stackexchange.com/questions/4320/compute-the-power-of-a-matrix-in-r/187477

答案 1 :(得分:1)

你可能指的是一个重载的运算符。

例如,考虑我可以将重载运算符'%^%'定义为:

'%^%' <- function(x,y) x+y

 a <- matrix(c(1,2,3,4),2,2)

 b <- matrix(c(1,2,3,4),2,2)

然后在矩阵a和b上应用运算符将​​根据我的运算符定义添加它们。

a %^% b 
    [,1] [,2]
[1,]    2    6
[2,]    4    8

还要了解R运算符在您的上下文中的含义,%^% 您可以通过以下方式查看自定义运算符定义:

`%^%`
function(x,y) x+y

此外,自定义运算符可以像函数调用一样使用,在这种情况下函数名称为%^%,这与operand1%^%operand2

相同
   `%^%`(a,b)
     [,1] [,2]
[1,]    2    6
[2,]    4    8

因此,在您的情况下,它是一个需要定义的自定义运算符,然后才能使用它(实现也可以来自libray)。

答案 2 :(得分:0)

你可以编写一个函数来计算R中矩阵的幂:

multi<-function(A,n){
  temp_mat<-A
  for (i in 2:n){
    temp_mat<-temp_mat%*%A

  }
  return(temp_mat)
}