派发前的类型转换
Type conversion before dispatch takes place
我正在定义一个泛型函数
genfun <- function(x, ...)
UseMethod("genfun")
应该有两个实例:
genfun.default(如果 x 是矩阵)
genfun.formula(如果 x 是一个公式)
这很好用,但现在我想在调度发生之前得到它,如果 x 是一个字符串,它就被强制为一个公式。
很遗憾,以下内容不起作用
genfun <- function(x, ...) {
if (is.character(x)) x <- as.formula(x)
UseMethod("rlasso")
}
有没有办法在不定义另一个实例的情况下处理这个问题
genfun.character?
非常感谢您的提前帮助!
最佳,
马丁
我在想这样的事情(尽管正确的方法是定义另一种方法)。
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
我正在定义一个泛型函数
genfun <- function(x, ...)
UseMethod("genfun")
应该有两个实例: genfun.default(如果 x 是矩阵) genfun.formula(如果 x 是一个公式)
这很好用,但现在我想在调度发生之前得到它,如果 x 是一个字符串,它就被强制为一个公式。
很遗憾,以下内容不起作用
genfun <- function(x, ...) {
if (is.character(x)) x <- as.formula(x)
UseMethod("rlasso")
}
有没有办法在不定义另一个实例的情况下处理这个问题 genfun.character?
非常感谢您的提前帮助!
最佳,
马丁
我在想这样的事情(尽管正确的方法是定义另一种方法)。
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