2017-06-24 5 views
1

xts 0.9.7から0.10.0への更新時に、データフレームからxtsへの変換が失敗します。xts 0.9.7から0.10.0へのXts変換に失敗します。

#THIS WORKS (uses xts 0.9.7): 

library(xts)   
DFX <- structure(list(DateTime = structure(list(sec = c(0, 0, 0), min = c(10L, 0L, 5L), hour = c(17L, 18L, 18L), mday = c(24L, 24L, 24L), mon = c(5L, 5L, 5L), year = c(114L, 114L, 114L), wday = c(2L, 2L, 2L), yday = c(174L, 174L, 174L), isdst = c(1L, 1L, 1L), zone = c("EDT", "EDT", "EDT"), gmtoff = c(NA_integer_, NA_integer_, NA_integer_)), .Names = c("sec", "min", "hour", "mday", "mon", "year", "wday", "yday", "isdst", "zone", "gmtoff"), class = c("POSIXlt", "POSIXt")), Open = c(125.03, 125.34, 125.85)), .Names = c("DateTime", "Open"), class = "data.frame", row.names = 558:560) 
DFX <- as.xts(DFX[, -1], order.by = DFX$DateTime) 


#THIS DOESN'T WORK (uses xts 0.10.1): 

install.packages("devtools") 
require(devtools) 
install_github("joshuaulrich/xts") 
library(xts)   
DFX <- structure(list(DateTime = structure(list(sec = c(0, 0, 0), min = c(10L, 0L, 5L), hour = c(17L, 18L, 18L), mday = c(24L, 24L, 24L), mon = c(5L, 5L, 5L), year = c(114L, 114L, 114L), wday = c(2L, 2L, 2L), yday = c(174L, 174L, 174L), isdst = c(1L, 1L, 1L), zone = c("EDT", "EDT", "EDT"), gmtoff = c(NA_integer_, NA_integer_, NA_integer_)), .Names = c("sec", "min", "hour", "mday", "mon", "year", "wday", "yday", "isdst", "zone", "gmtoff"), class = c("POSIXlt", "POSIXt")), Open = c(125.03, 125.34, 125.85)), .Names = c("DateTime", "Open"), class = "data.frame", row.names = 558:560) 
DFX <- as.xts(DFX[, -1], order.by = DFX$DateTime) 

#Error message: 
#Error in .Call("do_is_ordered", x = x, increasing = as.logical(increasing), : 
#     "do_is_ordered" not available for .Call() for package "xts" 

推測XTS 0.10.0は、完成したビルドではありません。しかし、私はのquantstratパッケージが必要ですブロッターパッケージとして0.10.0に更新しましたxts 0.10.0が必要です。私はそれにクオンタムストラテジーを実行するために、ダッシュデータのデータフレームをxtsオブジェクトに変換するためにこれを必要としました(xtsオブジェクトが必要です)。

答えて

3

これはXセッションではなく、Rセッションに問題があります。私はあなたがアップデートしようとしたときにRセッションが現在パッケージを使用している場合、パッケージが正しく更新されないWindows上でRStudioを実行していると仮定します。

解決方法は、実行中のすべてのRセッションを終了し、GitHubからxtsをインストールすることです。

あなたがそれを行うたらXTSオブジェクトがPOSIXltインデックスを好きではないので、あなたも(彼らは時間コンポーネントのリストであるため、エポックからの秒数ではなく、POSIXctのように、)、as.xtsにあなたの呼び出しを変更する必要があります。

R> DFX <- as.xts(DFX[, -1], order.by = DFX$DateTime) 
Error in is.finite(order.by) : 
    default method not implemented for type 'list' 

エラーを修正するための問題を開きます。 as.xts呼び出しの中でPOSIXltオブジェクトをPOSIXctに変換するだけで簡単です。

+0

'POSIXlt'から' POSIXct'への変換が問題を解決しました。それは理にかなっている。興味深いことに、xts 0.9.7に関する問題ではありませんでした。ジョシュアありがとう。 – Krug

+1

@Gracos:[issue#194](https://github.com/joshuaulrich/xts/issues/194)を参照してください。それは私が別の問題にパッチを当てながら導入したもののようです。 –

関連する問題