Преобразование типов перед отправкой

Я определяю общую функцию

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

которые должны иметь экземпляры tow: genfun.default (если x - матрица) genfun.formula (если x - формула)

Это работает нормально, но теперь я хотел бы иметь это до отправки, что если x является строкой charcter, она должна быть формулой.

К сожалению, следующее не работает

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

Есть ли способ справиться с этим без определения следующего экземпляра, такого как genfun.character?

Большое спасибо за вашу помощь заранее!

Лучший,

Мартин

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
Другие вопросы по тегам