R setClass使表示为任何类

R setClass使表示为任何类,r,s4,R,S4,有没有办法允许我在一个班级中的某个时段是任何班级 i、 e差不多 setClass(“myClass”,表示法(A=“任意”)) 我尝试过“S4”,但不起作用如果您创建一个通用S4函数,您应该能够将方法参数的可接受签名设置为“ANY”。我不确定表示是否可以设置为“ANY”,因为我对表示的看法比这更具体。未分配签名的参数会记录在“ANY”类中。您可以使用“vector”类型作为表示,可以接受列表或原子对象: setClass("myClass", representation(A="vector"

有没有办法允许我在一个班级中的某个时段是任何班级

i、 e差不多

setClass(“myClass”,表示法(A=“任意”))


我尝试过“S4”,但不起作用

如果您创建一个通用S4函数,您应该能够将方法参数的可接受签名设置为“ANY”。我不确定表示是否可以设置为“ANY”,因为我对表示的看法比这更具体。未分配签名的参数会记录在“ANY”类中。您可以使用“vector”类型作为表示,可以接受列表或原子对象:

setClass("myClass", representation(A="vector"))
[1] "myClass"
> new("myClass", A=list(a=c(2,3,4), b="a")  )
An object of class "myClass"
Slot "A":
$a
[1] 2 3 4

$b
[1] "a"
我不确定这是否像您要求的那样一般,但您也没有说需要属性。我认为vector可能会丢失属性,但似乎不会:

> setClass("myClass", representation(A="vector"))
[1] "myClass"
> new("myClass", A=B  )
An object of class "myClass"
Slot "A":
$a
[1] 2 3 4

$b
[1] "a"

attr(,"myattr")
[1] "test"

我在Paul Gilbert的TSdbi包的源代码中找到了一个很好的解决方法

setClassUnion("OptionalChar",   c("character",   "logical"))
setClass("myClass", representation(A="OptionalChar"))
如果您希望使用
字符
,但又希望允许使用
NA
,则这会很有帮助。我知道这不是“任何”,但也许你想限制它,但不是单一模式

您可以使用“ANY”

>setClass(“myClass”,表示法(A=“ANY”))
>新的(“myClass”,A=c(1,2,3))
类“myClass”的对象
插槽“A”:
[1] 1 2 3
>新建(“myClass”,A=唯一)
类“myClass”的对象
插槽“A”:
函数(x,不可比较=FALSE,…)
使用方法(“唯一”)
> setClass("myClass", representation(A="ANY"))
> new("myClass", A=c(1,2,3))
An object of class "myClass"
Slot "A":
[1] 1 2 3
> new("myClass", A=unique)
An object of class "myClass"
Slot "A":
function (x, incomparables = FALSE, ...) 
UseMethod("unique")
<bytecode: 0x00000000071a8270>
<environment: namespace:base>