2016-06-17 3 views
1

I는 일반 함수형식 변환이

genfun <- function(x, ...) 
    UseMethod("genfun") 
를 형성하고 소요

토우 인스턴스를 가져야한다 : genfun.default를 (x는 행렬 인 경우) genfun.formula (X가 화학식 인 경우)

괜찮 았지만 이제는 디스패치가 일어나기 전에 x를 charcter 문자열로 지정하면 수식이됩니다.

불행하게도 다음은 genfun.character 같은 추가 인스턴스를 정의하지 않고이 문제를 해결할 수있는 방법이 있나요

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

작동하지 않는 이유는 무엇입니까?

미리 도움을 주셔서 감사합니다.

최저

,

마틴

+0

'클래스 (X)'당신은 내가 답장을 보내 주셔서 – 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