我想問一個關於xts子類的建議。我正在使用xtsAttributes
爲我的xts數字矩陣的每一列添加元數據信息。元數據包含一個字符串和每列的描述。xts子類子集方法
因此ncol(myxtsobject) = length(metadata)
。並且我還爲該對象添加了一個新類,例如myclass
。現在我想編寫方法[.myclass
延伸[.xts
函數也相應地子集xts矩陣時我的元數據。
例如:d <- myobject[,c(2,3,23)]
將生成d
,其中有3列,並且元數據屬性中有3個條目。
有人可以告訴我怎麼做,而理性地使用現有的XT和矩陣子集功能?
更多細節.... 還有就是我的目標如下(只是一個簡約的例子)結構:
# creating the object
n <- 10
ind <- Sys.time() + 1:n
col <- sin(seq(from=0, to=2*pi, length.out=n))
col2 <- cos(seq(from=0, to=2*pi, length.out=n))
d <- xts(x=cbind(col,col2), order.by=ind)
KEY1 <- paste("desc k1 -",1:ncol(d))
KEY2 <- paste("desc k2 -",1:ncol(d))
xtsAttributes(d) <- data.frame(KEY1,KEY2,stringsAsFactors=F)
d <- structure(d, class = c("dm", "xts", "zoo"))
# resulting structure
str(d)
現在,有了這樣的目標,我想開發一套允許子集化consitent功能使用對象元數據KEY1,KEY2,所以如果我刪除/選擇第2列,我將從KEY1和KEY2中刪除/選擇相應的成員。
我目前使用此代碼,目前爲止工作。重用data.frame和xts子集。 這些getMeta.dm(x)和is.dm(x)是具有明顯功能的函數。
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#: subset.dm
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
subset.dm <- function(x,i,j,...) {
# get my metadata, returns data.frame
md <- getMeta.dm(x)
# metadata subset
md <- md[j,]
# xts subset
myclass <- class(x)
x <- as.xts(x)
x <- x[i,j,...]
# now again assembling md object
# TODO fu() for creating dm objects
xtsAttributes(x) <- md
class(x) <- myclass
if(is.dm(x)) return(x) else stop("result is not dm object")
}
`[.dm` <- subset.dm
我提出了類似的解釋。我正在編寫一個尚未發佈的軟件包,我們可以通過電子郵件進行離線討論嗎? – 2012-08-08 14:58:57
@PetrMatousu:當然,你可以在我的個人資料中找到我的電子郵件。 – 2012-08-08 15:02:59
好吧,我把它放到我的問題的最後。我沒有看到任何碰撞或錯誤行爲,所以我可能會用我的方式,但感謝你的努力。 – 2012-08-09 21:52:22