サーチ…


前書き

このドキュメントのページでは、Rの4つのオブジェクトシステムとその上位レベルの類似点と相違点について説明します。個々のシステムの詳細については、それぞれのトピックページを参照してください。

4つのシステムは、S3、S4、Reference Classes、およびS6です。

S3

S3オブジェクトシステムは、Rの非常に単純なOOシステムです。

すべてのオブジェクトにはS3クラスがあります。それは関数classで得ることができます(?)。

> class(3)
[1] "numeric"

また、関数class設定することもできます:

> bicycle <- 2
> class(bicycle) <- 'vehicle'
> class(bicycle)
[1] "vehicle"

関数attr設定することもできます:

> velocipede <- 2
> attr(velocipede, 'class') <- 'vehicle'
> class(velocipede)
[1] "vehicle"

オブジェクトには多くのクラスがあります。

> class(x = bicycle) <- c('human-powered vehicle', class(x = bicycle))
> class(x = bicycle)
[1] "human-powered vehicle" "vehicle" 

ジェネリック関数を使用する場合、Rは、使用可能なジェネリックを持つクラスの最初の要素を使用します。

例えば:

> summary.vehicle <- function(object, ...) {
+   message('this is a vehicle')
+ }
> summary(object = my_bike)
this is a vehicle

しかし、ここでsummary.bicycle定義すると:

> summary.bicycle <- function(object, ...) {
+   message('this is a bicycle')
+ }
> summary(object = my_bike)
this is a bicycle


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow