read.zoo可以工作,但as.xts失败,并带有;“当前不支持的数据类型”;

read.zoo可以工作,但as.xts失败,并带有;“当前不支持的数据类型”;,r,xts,R,Xts,我有一个每日酒吧的csv文件,只有两行: "datestamp","Open","High","Low","Close","Volume" "2012-07-02",79.862,79.9795,79.313,79.509,48455 (该文件是一个xts,它被转换为data.frame,然后传递到write.csv) 我用这个加载它: z=read.zoo(file='tmp.csv',sep=',',header=T,format = "%Y-%m-%d") 它很好,如print(z)所

我有一个每日酒吧的csv文件,只有两行:

"datestamp","Open","High","Low","Close","Volume"
"2012-07-02",79.862,79.9795,79.313,79.509,48455
(该文件是一个xts,它被转换为data.frame,然后传递到
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列,我仍然会得到错误。但是,那么,这个错误消息是在说什么呢?

正如塞巴斯蒂安在评论中指出的那样,问题只在一行。具体来说,当read.zoo读取一行时,coredata是一个列表,但当有2+行时,coredata是另一个列表(矩阵?)

我将read.zoo的调用替换为以下内容,无论是1行还是2行以上,都可以正常工作:

d=read.table(fname,sep=',',header=T)
x=as.xts(subset(d,select=-datestamp),order.by=as.Date(d$datestamp))

如果你尝试
getS3method(“as.xts”,“zoo”)
,你会发现你遇到的问题就在这行:
xts(coredata(x),order.by=index(x),frequency=NULL)
既然
xts
是时间序列对象,那么这个问题可能是你的单一观察结果吗?@sebastian-c我想是的,因为如果我在tmp.csv中复制该行,则加载工作正常。。。所以,我真正的问题必须是如何将一条记录的csv文件加载到xts对象中?这可能是一个bug。xts/zoo对象的coredata应始终为矩阵。