我有一个日常酒吧的csv文件,只有两行:
"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列不是num
而且有一列是int
,因为即使删除了Volume列,我仍然会收到错误。但是,那个错误信息可能会讨论什么呢?
答案 0 :(得分:2)
正如塞巴斯蒂安在评论中指出的那样,问题出现在单行中。具体来说,当read.zoo读取单行时,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))