4

我使用 R 的东西很少是性能敏感的,但对于一项缓慢的任务,我已经从使用数据帧切换到xts对象,其速度非常令人满意,大约为 10 倍。

但是,我遇到了一个怪癖,就是合并对象merge.xts时似乎坚持要检查列名。xts文档指出该函数扩展merge.zoomerge.zoo确实遵守check.names = FALSE,但按照下面的代码不遵守merge.xts

问:是否可以强制merge.xts保持我的列名不变?不是,我可以在简单的对象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!)
4

1 回答 1

3

是否不能强制merge.xts保持列名不变(没有底层 C 代码的补丁)。

在您的问题中,您merge.zoo在 xts 对象上使用了...所以我不确定您的问题是什么。如果您不喜欢这zoo.new是一个动物园对象,只需将其包装在as.xts.

于 2013-01-20T04:11:15.967 回答