0

次のマトリックスを検討してください

> 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

このような行列を引数として受け入れる関数がありますが、関数が行列ではなく方程式自体を受け入れ、数式で提供される情報を使用して行列を作成できると便利です。terms()、など、さまざまな数式関連の関数に関するRのドキュメントを読んでいますがmodel.matrix()、やりたいことが簡単にできるようには見えません。

あなたはどう思いますか、それは合理的な量の仕事で実行可能ですか、それとも私はアイデアを捨てるべきですか?

4

1 に答える 1

1

私もあなたの問題を解決する別の方法があるのではないかと思います。ただし、本当にこの方法で実行したい場合は、方程式をとして保存し、適切なタイミングでそれらをexpression保存できます。eval次に例を示します。

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
于 2012-11-05T15:32:17.890 に答える