方法调度时 UseMethod 出错
Error in UseMethod when Method Dispatching
我尝试了以下代码来创建一个方法,但是当我使用名为 "tutu" 的通用函数时,我收到以下错误,而其他函数(tutu.num 和 tutu.ch)工作。请你能帮我理解错误在哪里吗?我希望 "tutu" 函数识别 class 并使用示例中的函数的适当方法 tutu.num。谢谢!
tutu.num<-function(x){x*100}
tutu.ch<-function(x){paste(x,"OK")}
tutu<-function(x){
UseMethod("tutu")
}
vot<-1:5
tutu(vot)
使用方法错误("tutu"):
没有适用于 'tutu' 的方法应用于 class "c('integer', 'numeric')"
的对象
您需要在方法中的句点后包含完整的 class 名称。在你的例子中,变量 vot
有 class "numeric",但是你只有为 classes "num" 和 "ch" 定义的方法,两者都没有其中存在。您需要定义 tutu.numeric
和 tutu.character
。也可以定义一个tutu.default
来处理其他未指定的对象class:
tutu <- function(x) UseMethod("tutu")
tutu.default <- function(x) return(NULL)
tutu.numeric <- function(x) x * 100
tutu.character <- function(x) paste(x, "OK")
tutu(1:5)
#> [1] 100 200 300 400 500
tutu("method dispatch")
#> [1] "method dispatch OK"
tutu(data.frame(a = 1, b = 2))
#> NULL
我尝试了以下代码来创建一个方法,但是当我使用名为 "tutu" 的通用函数时,我收到以下错误,而其他函数(tutu.num 和 tutu.ch)工作。请你能帮我理解错误在哪里吗?我希望 "tutu" 函数识别 class 并使用示例中的函数的适当方法 tutu.num。谢谢!
tutu.num<-function(x){x*100}
tutu.ch<-function(x){paste(x,"OK")}
tutu<-function(x){
UseMethod("tutu")
}
vot<-1:5
tutu(vot)
使用方法错误("tutu"): 没有适用于 'tutu' 的方法应用于 class "c('integer', 'numeric')"
的对象您需要在方法中的句点后包含完整的 class 名称。在你的例子中,变量 vot
有 class "numeric",但是你只有为 classes "num" 和 "ch" 定义的方法,两者都没有其中存在。您需要定义 tutu.numeric
和 tutu.character
。也可以定义一个tutu.default
来处理其他未指定的对象class:
tutu <- function(x) UseMethod("tutu")
tutu.default <- function(x) return(NULL)
tutu.numeric <- function(x) x * 100
tutu.character <- function(x) paste(x, "OK")
tutu(1:5)
#> [1] 100 200 300 400 500
tutu("method dispatch")
#> [1] "method dispatch OK"
tutu(data.frame(a = 1, b = 2))
#> NULL