私が R を使用する目的でパフォーマンスに影響を与えるものはほとんどありませんが、1 つの遅いタスクについては、データ フレームの使用からxts
オブジェクトへの使用に切り替えたところ、約 10 倍の非常に満足のいくスピードアップが得られました。
ただし、オブジェクトmerge.xts
をマージするときに列名のチェックを要求しているように見えるという の癖に遭遇しました。xts
ドキュメントは、関数が拡張されて従うことを指摘していますが、以下のコードに従うことはmerge.zoo
しません。merge.zoo
check.names = FALSE
merge.xts
merge.xts
Q:列名を変更せずに強制することはできますか? そうではなく、merge.zoo
単純なxts
オブジェクトで(どちらが機能するか)同じ意味で使用できますか?
library(xts)
set.seed(54321)
xts1 <- xts(runif(5, 100, 200), order.by = seq(as.Date('2013-01-14'),
as.Date('2013-01-18'), by = "day"))
xts2 <- xts(runif(5, 1000, 2000), order.by = seq(as.Date('2013-01-14'),
as.Date('2013-01-18'), by = "day"))
names(xts1) <- 'my value 1'
names(xts2) <- 'my value 2'
xts1
xts2
xts.new <- merge.xts(xts1, xts2)
xts.new # names have been changed: unwanted behaviour
xts.new <- merge.xts(xts1, xts2, check.names = FALSE)
xts.new # argument is ignored, instead column called 'check.names' is added
zoo.new <- merge.zoo(xts1, xts2, check.names = FALSE)
zoo.new # check.names argument is honoured, names remain unchanged (good!)