1

ジェネリック関数を定義しています

genfun <- function(x, ...)
    UseMethod("genfun")

これには 2 つのインスタンスが必要です: genfun.default (x が行列の場合) genfun.formula (x が式の場合)

これは問題なく動作しますが、ディスパッチが行われる前に、x が文字列の場合は強制的に数式にするようにしたいと思います。

残念ながら、以下は機能しません

genfun <- function(x, ...) {
    if (is.character(x)) x <- as.formula(x)
    UseMethod("rlasso")
}

genfun.character のようなインスタンスをさらに定義せずにこれを処理する方法はありますか?

事前にご協力いただきありがとうございます。

一番、

マーティン

4

1 に答える 1

1

私はこのようなことを考えていました(別のメソッドを定義するのが適切な方法ですが)。

genfun <- function(x, ...)
  UseMethod('genfun')

genfun.default <- function(x, ...) {
  if (is.character(x)) {
    x <- as.formula(x)
    return(genfun(x))
  }
  dim(x)
}

genfun.formula <- function(x, ...) {
  message('using formula method')
  ## do something
}


genfun(mtcars)
# [1] 32 11

genfun(y ~ x)
# using formula method

genfun('y ~ x')
# using formula method
于 2016-06-18T14:18:32.027 に答える