【发布时间】:2018-02-16 01:14:36
【问题描述】:
我的问题是如何扩展 rbind() 以使用 data.frame 子类?我似乎无法正确扩展 rbind() 以使用即使是非常简单的子类。以下示例演示了该问题:
子类和方法定义:
new_df2 <- function(x, ...)
{
stopifnot(is.data.frame(x))
structure(x, class = c("df2", "data.frame"), author = "some user")
}
rbind.df2 <- function(..., deparse.level = 1)
{
NextMethod()
}
我意识到在这种情况下不需要扩展rbind(),但我的宏伟计划是在我的子类上使用rbind.data.frame(),然后在其结果中添加一些额外的检查/属性。
如果您调用以下命令,则会收到错误消息:Error in NextMethod() : generic function not specified。
不起作用:
t1 <- data.frame(a = 1:12, b = month.abb)
t2 <- new_df2(t1)
rbind(t2, t2)
我也尝试使用NextMethod(generic = "rbind"),但在这种情况下,您会收到此错误:Error in NextMethod(generic = "rbind") : wrong value for .Method。
也不起作用:
rbind.df2 <- function(..., deparse.level = 1)
{
NextMethod(generic = "rbind")
}
rbind(t2, t2)
我也束手无策,也猜测我对子类/方法的理解有限。感谢您的帮助。
【问题讨论】:
-
您想要与数据帧相同的行为吗?
rbind/rbind.data.frame应该都可以工作。 -
@F.Privé 问题是在为新类添加
rbind函数时 NextMethod("rbind") 不起作用。
标签: r generics methods rbind r-s3