R S4初始化函数中的“ .Object”和“ object”有什么区别?

时间:2018-12-23 12:14:36

标签: r s4

我在R中使用S4以及定义初始化函数的内容。但是 .Object 效果很好,并且 object 将失败。为什么?

############ method1: Bad
setMethod("initialize", "XY2Z", function(object,...){
  object <- callNextMethod()
  object@nodes <- getNodes(object)
  object
})
########### method2: Good
setMethod("initialize", "XY2Z", function(.Object,...){
  .Object <- callNextMethod()
  .Object@nodes <- getNodes(.Object)
  .Object
})
方法1:conformMethod中的错误(签名,mnames,fnames,f,fdef,definition):   带'initialize'标记的'.Object =“ XY2Z”'的方法:方法定义里所忽略的正式参数(.Object =“ XY2Z”,... =“ XY2Z”)不能存在于标记

方法2:运行正常

1 个答案:

答案 0 :(得分:0)

我不确定为什么错误仅在一种情况下出现,但是这里可能是解决方法

initialize <- function(object,...) 0
setGeneric("initialize")
# method 1 (doesn't give an error)
setMethod("initialize", "XY2Z", function(object,...){
  object <- callNextMethod()
  object@nodes <- getNodes(object)
  object
})