R s3初学者-如何使用新的s3结构?

R s3初学者-如何使用新的s3结构?,r,R,下面我创建了一个函数,它返回一个带有修改属性的新对象的结构 f <- function(loc) { structure(list(loc = loc , arg1=0 , c_val=c()), class="myclass") } f对您的问题的一个简要回答是,您需要创建getter和setter函数作为对象定义的一部分,并在使用list()生成对象时为它们命名 此代码生成以下到R控制台的输出 > x <- myObject() > &

下面我创建了一个函数,它返回一个带有修改属性的新对象的结构

f <- function(loc) {
  structure(list(loc = loc , arg1=0 , c_val=c()),
            class="myclass")
}

f对您的问题的一个简要回答是,您需要创建getter和setter函数作为对象定义的一部分,并在使用
list()
生成对象时为它们命名

此代码生成以下到R控制台的输出

> x <- myObject()
> 
> x$setAttribute1(15)
> x$getAttribute1()
[1] 15
> 
>x
>x$setAttribute1(15)
>x$getAttribute1()
[1] 15
> 

有关此主题的更多详细信息,包括使用
的背景信息,对您的问题的总结回答是,您需要创建getter和setter函数作为对象定义的一部分,并在使用
list()
生成对象时为它们命名

此代码生成以下到R控制台的输出

> x <- myObject()
> 
> x$setAttribute1(15)
> x$getAttribute1()
[1] 15
> 
>x
>x$setAttribute1(15)
>x$getAttribute1()
[1] 15
> 

有关此主题的更多详细信息,包括
loc
的使用背景,
arg1
val
是内部列表结构的组成部分,有时也称为插槽。属性会有所不同

使用您已经创建的构造函数,您可以免费获得许多方法,尽管您可以重写它们

# create a new object
obj <- f(1)

# get arg1
obj$arg1
## [1] 0

# update arg1
obj$arg1 <- 2

# get arg1
obj$arg1
## [1] 2

print(obj)
定义自定义打印方法:

print.myclass <- str
print(obj)
定义自定义getter:

`$.myclass` <- function(x, name) {
   cat("getting", name, "\n")
   .subset2(x, name)
}
obj$arg1

如果需要示例,请参阅定义S3类的zoo包,
zoo
zooreg
yearmon
yearqtr
以及每个类的许多方法。

loc
arg1
val
是内部列表结构的组件,有时也称为插槽。属性会有所不同

使用您已经创建的构造函数,您可以免费获得许多方法,尽管您可以重写它们

# create a new object
obj <- f(1)

# get arg1
obj$arg1
## [1] 0

# update arg1
obj$arg1 <- 2

# get arg1
obj$arg1
## [1] 2

print(obj)
定义自定义打印方法:

print.myclass <- str
print(obj)
定义自定义getter:

`$.myclass` <- function(x, name) {
   cat("getting", name, "\n")
   .subset2(x, name)
}
obj$arg1
如果需要示例,请参阅定义S3类的zoo包、
zoo
zooreg
yearmon
yearqtr
以及每个类的许多方法

getting arg1 
[1] 2