小编tuc*_*ano的帖子

使用S3虚拟类作为S4类的插槽,得到错误:得到类"S4",应该是或者扩展类"nls.lm"

R版本:

    R version 2.15.2 (2012-10-26)
    Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
Run Code Online (Sandbox Code Playgroud)

我想创建一个使用nls.lm函数的输出对象(package:minpack.lm)作为插槽的S4类:

setOldClass("nls.lm")

setClass (
  Class="TestClass",
  representation=representation(
      lmOutput = "nls.lm",
      anumeric = "numeric"
    )
  )
Run Code Online (Sandbox Code Playgroud)

现在,如果我想在"构造函数"中调用这个类,我可以做这样的事情(对吗?):

myConstructor <- function()
{
  return(new("TestClass"))
}

pippo <- myConstructor()

pippo
An object of class "TestClass"
Slot "lmOutput":
<S4 Type Object>
attr(,".S3Class")
[1] "nls.lm"

Slot "anumeric":
numeric(0)
Run Code Online (Sandbox Code Playgroud)

对象"pippo"似乎正确初始化.

如果我使用此代码而得到错误:

myConstructor2 <- function()
{
  pippo <- new("TestClass", anumeric=1000)
  return(pippo)
}

pippo <- myConstructor2()
Error in validObject(.Object) : 
 invalid class “TestClass” object: invalid object for slot "lmOutput" in class "TestClass": …
Run Code Online (Sandbox Code Playgroud)

r slots s4

6
推荐指数
1
解决办法
433
查看次数

标签 统计

r ×1

s4 ×1

slots ×1