如何在R中象征性地表示矩阵

时间:2012-11-05 14:54:25

标签: r formula

考虑以下矩阵

> A
   a  b  k
a  1  0  0
b  0  1  0
c  2  3  0
d -1 -1 10

它应被解释为一系列方程式:

a = a
b = b
c = 2*a + 3*b
d = 10 - a - b

我有一个函数接受这样的矩阵作为参数,但是如果函数可以接受方程本身而不是矩阵并使用通过公式提供的信息构建矩阵,那将是很好的。我一直在阅读有关各种与公式相关的函数的R文档,包括terms()model.matrix()和其他函数,看起来不像我想做的事情可以直接完成。

您如何看待,合理的工作量是否可行,还是应该抛弃这个想法?

1 个答案:

答案 0 :(得分:1)

我也怀疑有不同的方法来解决你的问题。但是,如果您真的想这样做,可以在适当的时间将方程存储为expressioneval。这是一个例子:

build.matrix<-function(m, c.expr, d.expr) {
  rbind(m,eval(c.expr),eval(d.expr))
}

a<-c(1,0,0)
b<-c(0,1,0)
m<-rbind(a,b)
c <- expression(2*m['a',]+ 3*m['b',])
d <- expression(10 - m['a',] - m['b',])

build.matrix(m,c,d)

#   [,1] [,2] [,3]
# a    1    0    0
# b    0    1    0
#      2    3    0
#      9    9   10