2016-06-17 2 views
1

Я образующую функцию универсальногоТип преобразования перед отправкой проходит

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

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

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

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

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

Есть ли способ, чтобы справиться с этим без определения дальнейшего экземпляра как genfun.character?

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

Бест,

Martin

+0

если вы не имеете метод 'класса (х)', метод по умолчанию используется, так что вы можете добавить эту строку в метод по умолчанию, я полагаю – rawr

+0

Спасибо за ответ. Но метод по умолчанию передает только матрицы и является неправильным. Мне нужно как-то прийти к методу формулы и не хочу добавлять другой метод для символа ... – Martin

ответ

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 

 Смежные вопросы

  • Нет связанных вопросов^_^