私はいくつかの時系列とそれらの特性を長い形式のdata.tableで処理しており、構文xts
を利用していくつかの異なるタイプのオブジェクトを構築したいと思います。data.table
これが私が心に留めていることです:
いくつかの予備データ
library(data.table)
set.seed(1)
DT <- data.table(
dat = as.Date("2013-01-01") + rep(1:5, 2),
a = c(1, -1),
x = i <- rnorm(10),
y = 2 * i + rnorm(10),
z = 3 * i + rnorm(10))
3つの異なる時系列を構築しましょう(しようとします)
DT[a == 1,{
x.ts <- xts(x, order.by = dat)
y.ts <- xts(y, order.by = dat)
}]
DT[
, list(sz = mead(z/x)), by = dat][ # operate on columns of the datatable
, z.ts <- xts(sz, order.by = dat)] # construct xts
このコードには2つの問題があります。
- 画面に印刷し
y.ts
てz.ts
; j
オブジェクトは、グローバル環境ではなく環境でのみ作成されます。
(2)を解くには、グローバル環境内のオブジェクトに名前を付けて、次を使用します<<-
。
x.ts <- y.ts <- z.ts <- NA
DT[a == 1,{
x.ts <<- xts(x, order.by = dat)
y.ts <<- xts(y, order.by = dat)
}
]
DT[
, list(sz = mean(z/x)), by = dat][
, z.ts <<- xts(sz, order.by = dat)]
本当に
> z.ts
[,1]
2013-01-02 2.300730
2013-01-03 4.969685
2013-01-04 1.959377
2013-01-05 1.961270
2013-01-06 3.256254
データテーブル内でこのタイプの割り当てをサイレントにするにはどうすればよいですか?この使用は<<-
正当化されていますか、それともこれを行うためのより良い方法がありますか?