4
讓我們:XTS分配
library(R6); library(data.table); library(xts)
Portfolio <- R6Class("Portfolio",
public = list(name="character",
prices = NA,
initialize = function(name, instruments) {
if (!missing(name)) self$name <- name
}
))
p = Portfolio$new("ABC")
DT = data.table(a=1:3, b=4:6)
X = xts(1:4, order.by=as.Date(1:4))
如果我們分配一個data.table
到物體槽中,然後修改外部數據表,在對象時隙的數據表是通過參考修改,以及:
p$prices = DT
p$prices
DT[a==1,b:=10] # modify external table
p$prices # verify that the slot data is modified by reference
讓我們做了類似的實驗xts
:
p$prices = X
p$prices
X["1970-01-03"] <- 10 # modify the external xts
p$prices # observe that modification didn't take place inside the object
在對象槽內部指定xts
對象似乎破壞了槽和外部對象之間的鏈接,與data.table
不同。
是否可以通過引用來共享xts
?
嗯,有趣,謝謝!另外,你是否有足夠的聲望來創建新的標籤'R6'或什麼(還不存在),以便它可以添加到我的問題? – 2014-09-26 09:40:22
@DanielKrizian r6標籤添加。 – agstudy 2014-09-26 15:06:14
我注意到內存地址在賦值後發生了變化:'A1 = address(p1 $ series $ x); p2 $ series $ x [「1970-01-03」] < - 10; A2 =地址(p1 $ series $ x);相同的(A1,A2)#FALSE'因此寫入'xts'對象是一個代價高昂的操作,並且相對於'data.table'方法更慢:'DT [a == 1,b:= 10]'?思考我應該採用什麼數據結構 – 2014-09-29 22:25:56