2

毎日のバーのcsvファイルがあります。2行だけです。

"datestamp","Open","High","Low","Close","Volume"
"2012-07-02",79.862,79.9795,79.313,79.509,48455

(そのファイルは、data.frameに変換されてからに渡されたxtsでしたwrite.csv

私はこれをロードします:

z=read.zoo(file='tmp.csv',sep=',',header=T,format = "%Y-%m-%d")

そしてそれはprint(z)示すように大丈夫です:

           Open   High    Low    Close  Volume
2012-07-02 79.862 79.9795 79.313 79.509 48455 

しかし、次のようになりas.xts(z)ます:coredata.xts(x)のエラー:現在サポートされていないデータ型

str(z)出力は次のとおりです。

‘zoo’ series from 2012-07-02 to 2012-07-02
  Data:List of 5
 $ : num 79.9
 $ : num 80
 $ : num 79.3
 $ : num 79.5
 $ : int 48455
 - attr(*, "dim")= int [1:2] 1 5
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:5] "Open" "High" "Low" "Close" ...
  Index:  Date[1:1], format: "2012-07-02"

これまでのところ、ボリューム列を削除した後もエラーが発生するため、 4列がnum1列であるということではないことを確認しました。intしかし、それでは、そのエラーメッセージは何について話しているのでしょうか。

4

1 に答える 1

2

セバスチャンがコメントで指摘したように、問題は単一の行にあります。具体的には、read.zoo が 1 つの行を読み取る場合、coredata はリストですが、2 つ以上の行がある場合は別のもの (マトリックス?) になります。

read.zoo への呼び出しを次のように置き換えました。1 行でも 2 行以上でも問題なく動作します。

d=read.table(fname,sep=',',header=T)
x=as.xts(subset(d,select=-datestamp),order.by=as.Date(d$datestamp))
于 2012-07-19T07:49:12.103 に答える