gpt4 book ai didi

r - 在 R 中定义的类中使用默认值

转载 作者:行者123 更新时间:2023-12-01 16:09:20 24 4
gpt4 key购买 nike

我正在尝试定义其插槽之一是列表的类。
我的类的定义如下:

setClass("myClass",
slots=c(a="matrix",
b="matrix",
c="character",
d="list"))
d是一些参数的列表,如下所示:
d <- list(d1=c('as','sd'), d2=c(2,3,4), d3=5)
d 中的元素数是可变的,即在一个对象中它可能只有 d1在另一个对象中它包含 d1d2 .

我想定义一个这样的对象:
myObject=new("myClass", 
a = matrix(0, nrow=3, ncol=5),
b=matrix(1, nrow=2, ncol=3),
c='first',
d=list(d1=c('ak','fd','sd'), d2=c(2,3,4)))

定义后 myObject , 我要设置 d3在列表中 d到它的默认值,但我不知道我该怎么做。如果有人可以帮助我,我将不胜感激。

谢谢。

最佳答案

可以为类提供原型(prototype)

.myClass <- setClass("myClass",
slots=c(a="matrix",
b="matrix",
c="character",
d="list"),
prototype=prototype(
d=list(d1=c('as','sd'), d2=c(2,3,4), d3=5)))

将原型(prototype)用作由变量 d 更新的模板的代码可能
d=list(d1=c('ak','fd','sd'), d2=c(2,3,4))
myd <- getClass("myClass")@prototype@d
myd[names(d)] <- d

新类可以用
.myClass(d=myd)

可以通过定义 initialize() 以更用户友好的方式公开这一点。方法,或通过编写构造函数,如
myClass <- function(a, b, c, d, ...) {
myd <- getClass("myClass")@prototype@d
myd[names(d)] <- d
.myClass(a=a, b=b, c=c, d=myd, ...)
}

将列表作为插槽类型首先破坏了使用类的目的;也许最好有明确的插槽 d1、d2、d3?

关于r - 在 R 中定义的类中使用默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29733168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com