理工系研究者のための Mac OS X, Windows, Linux メモ
 
ホーム >> UNIX >> R >> R6クラス
このエントリーをはてなブックマークに追加

Rのクラス(R6クラス)

作成日:2015.4.18
環境:R 3.0.3

R6はRへのクラスの実装の一つです。R6を用いるにはパッケージをインストールします。

  1. install.packages('R6');
R6を使用するときには,あらかじめ読み込む必要があります。
  1. library(R6);

クラスのサンプルです。

  1. library("R6")
  2.  
  3. Hoge <- R6Class(
  4. classname="Hoge",
  5. private = list(
  6. m.x = NA,
  7. m.str = NA
  8. ),
  9. public = list(
  10. initialize=function(){
  11. cat("Running initialization...\n")
  12. },
  13. y = 0,
  14. getX = function(){
  15. return(private$m.x) # privateメンバにアクセス
  16. },
  17. setX = function(x){
  18. private$m.x <<- x # privateメンバに代入
  19. },
  20. getY = function(){
  21. return(self$y) # publicメンバにアクセス
  22. },
  23. setY = function(y){
  24. self$y <<- y # publicメンバに代入
  25. },
  26. getStr = function(){
  27. return(private$m.str)
  28. },
  29. setStr = function(str){
  30. private$m.str <<- str
  31. }
  32. )
  33. )
  34. # 派生クラス
  35. SubHoge <- R6Class(
  36. classname="SubHoge",
  37. inherit = Hoge,
  38. public = list(
  39. initialize=function(){
  40. cat("Running initialization in SubHoge ...\n")
  41. super$initialize() # 基底クラスのコンストラクタ呼び出し
  42. private$m.x <<- 1 # 基底クラスのプライベート変数への代入
  43. private$m.str <<- "NA"
  44. },
  45. getX = function(){
  46. return(2*super$getX()) # 基底クラスのメソッドを使う
  47. },
  48. getStr = function(){
  49. return(paste("Sub",super$getStr(),sep = "-"))
  50. }
  51. )
  52. )
クラスのインスタンスを生成して利用してみます。
  1. source("hoge.R")
  2.  
  3. h <- Hoge$new()
  4.  
  5. h$setX(3)
  6. cat("Hoge$x=",h$getX(),"\n")
  7.  
  8. h$setStr("fuga")
  9. cat("Hoge$str=",h$getStr(),"\n")
  10.  
  11. h$setY(10)
  12. cat("Hoge$y=",h$getY(),"\n")
  13.  
  14. subH <- SubHoge$new()
  15.  
  16. subH$setX(3)
  17. cat("SubHoge$x=",subH$getX(),"\n")
  18.  
  19. subH$setStr("fuga")
  20. cat("SubHoge$str=",subH$getStr(),"\n")
> source("main.R")
Hoge$x= 3 
Hoge$str= fuga 
Hoge$y= 10 
SubHoge$x= 6 
SubHoge$str= Sub-fuga

関連するページ

参考サイト・参考文献