2013-01-20 57 views
3

我使用R的很少的部分是性能敏感的,但對於一個緩慢的任務,我已經從使用數據幀切換到xts對象,並且這個對象的加速度大概是10倍。有沒有辦法讓merge.xts保持名稱不變?

但是,我碰到了一個怪誕的merge.xts,這是它似乎堅持在合併xts對象時檢查列名稱。該文件指出,該功能延伸merge.zoomerge.zoo確實服從check.names = FALSE,但通過merge.xts以下的代碼不會。

問:是否可以強制merge.xts使我的列名保持不變?而不是,我可以在簡單的xts對象上互換地使用merge.zoo(它可以工作)嗎?

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!) 

回答

2

是沒可能迫使merge.xts離開列名不變(不帶補丁的底層C代碼)。

在你的問題中,你在你的xts對象上使用了merge.zoo ...所以我不確定你的問題是什麼。如果你不喜歡那個zoo.new是一個動物園對象,只需將它包裝在as.xts

+0

感謝您的確認。在它的表面上,動物園的物體看起來很好,我只是想知道是否有任何隱藏的陷阱。我會包裹他們。 – SlowLearner

相關問題