次のオブジェクトがあるとします。
X<-NULL
X$y<-1:10
X$A<-array(1:15,c(3,3,5))
attr(X,"Adim1")<-3
attr(X,"Adim2")<-5
class(X)<-"MyClass"
X$A
ここで、寸法を変更するオプションなしでの値を変更したいと思います。つまり、X$A
次のプロパティが必要です。
# This should work
X$A<- array(1,c(3,3,5))
# This should give an error or be identical with X$A[]<-4 i.e. X$A<- array(4,c(3,3,5))
X$A<- 4
#Actually it should be possible to change the last dimension to 1 but that's just some sugar:
X$A<- array(1,c(3,3,1))
この種の行動は何かできるのでしょうか?x$A に "MyClassArray" のようなクラスを与え、代入演算子を適切なチェックでオーバーロードすることを考えていましたが、すばやくグーグル検索すると、"<-" 演算子をオーバーロードすることはお勧めできません。他のオプションはありますか?
S4 クラスを使用して実現できることはわかっていますが、S3 と S4 を混在させたくありません。