setClassUnion 无法加入带有 coxph 的 glm class
setClassUnion fails joining a glm with a coxph class
当我尝试在 R 中创建一个 class 时,包含一个应该接受 glm
class 对象或 coxph
class 的插槽一个我在包构建过程中遇到错误
Error in setClassUnion(name = "glmORcoxph", members = c("glm", "coxph")) : the member classes must be defined: not true of "coxph"
。
我尝试将 @import
、@importClassesFrom
、@importFrom
Roxygen 指令放入我的源代码,但没有成功。这是我用来创建 DoseVolumeModel
class:
的代码
setClassUnion(name = "ConfidenceInterval", members = c("NULL", "numeric"))
setClassUnion(name = "glmORcoxph", members = c("glm", "coxph"))
setClass("DoseVolumeModel",
representation(
output.matrix = "matrix",
fitted.model = "glmORcoxph",
fitted.value = "numeric",
CI = "ConfidenceInterval",
fitted.parameter = "character"
)
)
我该如何解决?
您不能使用像 coxph
这样的 S3 classes,除非它们已经预先注册。您可以通过调用
setOldClass("coxph")
在您致电 setClassUnion
之前。然后您可以自由使用 coxph
作为插槽或 class 联合中的 class 定义。
请注意,对于此类 coxph
对象,您不能保证太多,因为 R 不强制它们具有任何特定属性。任何用户都可以自由地做类似
的事情
x <- 1
class(x) <- "coxph"
(或者拿一个真正的 coxph
对象和 NULL
部分)
它们仍然是您 classes 的有效输入。您可能希望实施一些输入检查以考虑到这一点。
当我尝试在 R 中创建一个 class 时,包含一个应该接受 glm
class 对象或 coxph
class 的插槽一个我在包构建过程中遇到错误
Error in setClassUnion(name = "glmORcoxph", members = c("glm", "coxph")) : the member classes must be defined: not true of "coxph"
。
我尝试将 @import
、@importClassesFrom
、@importFrom
Roxygen 指令放入我的源代码,但没有成功。这是我用来创建 DoseVolumeModel
class:
setClassUnion(name = "ConfidenceInterval", members = c("NULL", "numeric"))
setClassUnion(name = "glmORcoxph", members = c("glm", "coxph"))
setClass("DoseVolumeModel",
representation(
output.matrix = "matrix",
fitted.model = "glmORcoxph",
fitted.value = "numeric",
CI = "ConfidenceInterval",
fitted.parameter = "character"
)
)
我该如何解决?
您不能使用像 coxph
这样的 S3 classes,除非它们已经预先注册。您可以通过调用
setOldClass("coxph")
在您致电 setClassUnion
之前。然后您可以自由使用 coxph
作为插槽或 class 联合中的 class 定义。
请注意,对于此类 coxph
对象,您不能保证太多,因为 R 不强制它们具有任何特定属性。任何用户都可以自由地做类似
x <- 1
class(x) <- "coxph"
(或者拿一个真正的 coxph
对象和 NULL
部分)
它们仍然是您 classes 的有效输入。您可能希望实施一些输入检查以考虑到这一点。