Общая функция вызывается через второй аргумент foo(x, bar) в R
Я хочу сделать обобщенную функцию предиката () для класса 'foo' в R, чтобы она вызывалась, когда второй аргумент предиката () имеет класс 'foo':
class(y.foo) <- "foo"
predict(x, y.foo)
Является ли это возможным? Как это сделать?
1 ответ
Решение
Попробуй это. Здесь наш foo
метод просто выводит "foo"
и в реальном коде он будет заменен любым foo
метод у вас есть:
predict <- function(x, foo = NULL, ...) UseMethod("predict", foo)
predict.foo <- function(x, foo, ...) "foo" # replace with your foo method
predict.default <- function(x, foo = NULL, ...) if (is.null(foo))
stats::predict(x, ...) else stats::predict(x, foo, ...)
Теперь проверьте это:
y.foo <- 1
class(y.foo) <- "foo"
predict(0, y.foo)
## [1] "foo"
fm <- lm(demand ~ Time, BOD)
predict(fm)
## 1 2 3 4 5 6
## 10.24286 11.96429 13.68571 15.40714 17.12857 20.57143
predict(fm, newdata = list(Time = 1:2))
## 1 2
## 10.24286 11.96429
predict(fm, list(Time = 1:2)) # same
## 1 2
## 10.24286 11.96429