带有S4类的自定义软件包的R错误:class“;“类名”;在“包”中有一个锁定的定义;pkgname“;
我创建了一个包含以下函数的包:带有S4类的自定义软件包的R错误:class“;“类名”;在“包”中有一个锁定的定义;pkgname“;,r,class,oop,packages,s4,R,Class,Oop,Packages,S4,我创建了一个包含以下函数的包: make_LD <- function(a) { setClass("LongitudinalData", slots = list(subject = "numeric", visit = "numeric", room = "character", timepoint = "numeric", value = "numeric")) new("LongitudinalData", subject = a$id, visit = a$visit,
make_LD <- function(a) {
setClass("LongitudinalData", slots = list(subject = "numeric", visit = "numeric", room = "character", timepoint = "numeric", value = "numeric"))
new("LongitudinalData", subject = a$id, visit = a$visit, room = a$room, timepoint = a$timepoint, value = a$value)
}
有人能解释一下我应该如何在包中定义一个S4类,以便可以使用其他地方的数据实例化该类的新对象吗?提前感谢。发生这种情况是因为
make\uld
每次调用类时都试图重新定义类“纵向数据”
(这就是setClass
所做的)。因此,当用户调用它时,R拒绝重新定义该类,因为它会与已经存在的定义(如果有的话)冲突
最有可能的情况是,您希望将
setClass
语句作为独立语句放在包中的某个位置。然后,函数make\u LD
只调用new
并返回结果。发生这种情况是因为make\u LD
每次调用时都试图重新定义类“纵向数据”
(这就是setClass
所做的)。因此,当用户调用它时,R拒绝重新定义该类,因为它将与已经存在的定义(如果有的话)冲突
最有可能的情况是,您希望将setClass
语句作为独立语句放在包中的某个位置。然后,函数make\u LD
只调用new
并返回结果
Error in assignClassDef(Class, classDef, where) : class "LongitudinalData" has a locked definition in pkgname'