【问题标题】:%^% operator in RR 中的 %^% 运算符
【发布时间】:2018-11-10 04:07:28
【问题描述】:

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

如下条件:

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

【问题讨论】:

  • 从哪个包,你有运营商%^%
  • 试试install.packages("expm"); library(expm)
  • 谢谢本,这很好,包含在 expm 中

标签: r operators


【解决方案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

因此,在您的情况下,它是一个自定义运算符,在您使用它之前需要其定义(实现也可以来自库)。

【讨论】:

    【解决方案2】:

    您应该编写一个函数来计算 R 中矩阵的幂:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-12
        • 1970-01-01
        • 2019-09-06
        • 2017-09-10
        相关资源
        最近更新 更多