【发布时间】:2014-10-25 14:03:33
【问题描述】:
这是我的尝试:
x = list()
x$data = rnorm(26)
x$name = letters
class(x) <- "myclass"
"[" <- function(i, ...) UseMethod("[")
"[.myclass" <- function(...) {
res = x$data[...]
names(res) = x$names[...]
}
x[1:3]
它没有用:
> x = list()
> x$data = rnorm(26)
> x$name = letters
> class(x) <- "myclass"
> "[" <- function(i, ...) UseMethod("[")
> "[.myclass" <- function(...) {
+ res = x$data[...]
+ names(res) = x$names[...]
+ }
> x[1:3]
Error in UseMethod("[") :
no applicable method for '[' applied to an object of class "c('double', 'numeric')"
似乎“myclass”被忽略了。
【问题讨论】:
-
通常 [ 生成与其参数相同类的对象,因此我将定义 [ 以生成另一个
myclass对象,而不是不同类的对象。如果需要,您可以定义各种as.*方法将myclass对象转换为不同的类。