RのR6パッケージを使ってクラスを作るとき、クラスメソッドとかスタティックメソッドみたいな物を定義したい。
背景
R6パッケージ
で作ったこんなクラスに対して、クラスメソッドとかスタティックメソッドみたいな物を付けたい。
クラスメソッドとスタティックメソッドは違うものだけど、とにかくクラスをインスタンス化しなくても使えるメソッドを付けたい。
# ある証券の値動き。日足。 Stock <- R6::R6Class('Stock', public = list( initialize = function(price_moves) { private$price_moves <- price_moves private$convert_value_type() }, # ... public method達 ), private = list( # ... private method達 ) )
用途としては、このStock
クラスのinstance
を生成するメソッドをクラスメソッドとして付けたい。
結論
Stock <- R6::R6Class('Stock', public = list( initialize = function(price_moves) { private$price_moves <- price_moves private$convert_value_type() }, # ... public method達 ), private = list( # ... private method達 ) ) # オラァ Stock$create <- function(filepath) { Stock$new(fread(paste(work_dir, filepath, sep=''))) }