首页 > 解决方案 > R:如何将值矩阵转换为函数

问题描述

我有一个n x m值矩阵。在这个玩具示例中,假设n = m = 3.

mymat <- matrix(c(16, -15, -2, 15, 13, 16, 0, 0, 0.42), nrow = 3, ncol = 3)
> mymat
     [,1] [,2] [,3]
[1,]   16   15 0.00
[2,]  -15   13 0.00
[3,]   -2   16 0.42

我的目标是创建以下函数,其中输入x是长度m - 1向量。目标是返回n值,其中我将 的第一m-1列乘以 input 中mymatm-1条目x。然后我将在 的m第 th 列中添加值mymat。功能如下:

 myfun <- function(x){
   vec1 <- 16 * x[1] + 15* x[2]
   vec2 <- -15 * x[1] + 13 * x[2] 
   vec3 <- -2 * x[1] + 16 * x[2] + 0.42
   return(c(vec1, vec2, vec3))
 }

但是,如果mymat' 的维度增长,则构建此函数非常繁琐。有没有更有效的方法来编码?

标签: r

解决方案


你描述的是矩阵乘法,如果你1x.

这是你的功能:

foo = function(x, mat) {
  c(mat %*% c(x, 1))
}

示范:

all(myfun(1:2) == foo(1:2, mymat))
# [1] TRUE

all(myfun(3:4) == foo(3:4, mymat))
# [1] TRUE

推荐阅读