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