0

次のオブジェクトがあるとします。

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 を混在させたくありません。

4

1 に答える 1

0

[<-次のように使用します。

X <- NULL
X$A <- array(1:15,c(3,3,5))
X$A[] <- 4
X


$A
, , 1

     [,1] [,2] [,3]
[1,]    4    4    4
[2,]    4    4    4
[3,]    4    4    4

, , 2

     [,1] [,2] [,3]
[1,]    4    4    4
[2,]    4    4    4
[3,]    4    4    4

... etc.
于 2013-02-26T09:30:00.297 に答える