行列乗算演算子をR
にオーバーロードする方法は?私は他のほとんどの演算子(オプスを使用して)でそれを行うことができましたが、行列演算で私はこのエラーを取得する:ここでS3クラス用オーバーロード行列乗算R
requires numeric/complex matrix/vector arguments
は最小作業例です:
speed = function(x){
structure(list(y = x),
class = "speed")
}
m = matrix(c(1,2,3,4), ncol = 2)
s = speed(m)
# Addition works fine
`+.speed` = function(e1, e2){ e1$y + e2 }
s + 10
# But matrix multiplication doesn't
`%*%.speed` = function(e1, e2){ e1$y %*% e2 }
s %*% c(1,2)
'スピード'がクラスである場合、 'スピード'機能を定義したくありません。 as.speed関数を定義することを検討するかもしれません。 –
@ 42-フィードバックのためのThx。しかし、コンストラクタの名前を変更しても、動作を変更するようには見えません。 – dudu
\ '%*%。speed \'(s、c(1,2))は実際に動作することに注意してください。私は十分に精通していないので、「プリミティブ」にその作業をどうやって行うかを知ってもらう必要があります。 –