我想在R中创建一个新类,它基本上应该像向量类,除了向量中的每个元素都有两个“开始时间”和“结束时间”的附加属性。部分功能应该是各种传统的索引。
我在这里提供至少一些代码:
setClass(
Class = "Intervals",
representation = representation(
start.time = "POSIXct",
end-time = "POSIXct",
numbers = "numeric"),
contains = "vector"
)
这显然不适用于
之后iv <- function(start.time, end.time, numbers) {
new(Class="Intervals", start.time = start.time,
end.time = end.time, numbers = numbers)
}
和
st <- seq(1,5)*3600+as.POSIXct("1970-01-01 01:00")
et <- seq(2,6)*3600+as.POSIXct("1970-01-01 01:00")
numbers <- c(1,2,3,4,5)
example <- iv(st,et,numbers)
例子[1:3]例如给了我NA NA NA。
或者让我自己从像
这样的东西开始写吸气剂setMethod(
f = "[",
signature="Intervals",
definition=function(x,i,j,drop){
...
?当然我想避免这种情况,因为我不知道如何处理参数x,i,j,正确删除。
我需要插槽'号码'吗?有没有一种继承虚拟类向量的方法,允许我省略它?另外,我不想限制包含数值的向量的结构。
我希望这个问题不是太微不足道,但我读了书中的不同章节,并且我自己也找到了解决方案。
提前多多感谢。
米卡
答案 0 :(得分:2)
确定。同时我管理(在How to define the subset operators for a S4 class?的帮助下)(在重新命名之后):
setMethod(
f = "[",
signature="Intervals",
definition=function(x,i,j,...,drop=TRUE){
initialize(x, from=x@from[i], to=x@to[i], values = x@values[i])
}
)
如果有人有兴趣,show方法就像这样。
setMethod(
f = "show",
signature="Intervals",
definition=function(object){
rownames <- sapply(seq_along(object@to),
function (i) paste(object@from[i], "--", object@to[i]))
df.show <- data.frame(object@values, row.names = rownames)
names(df.show) <- ifelse(length(names(object@values)) == 0,
"Values", names(object@values))
print (df.show)
}
)