2015-06-30 28 views
0

我試圖使用rRTSCov功能和我得到一個錯誤highfreqency包錯誤錯誤:缺失值,其中TRUE/FALSE需要

library(highfrequency) 
head(all) 
dim(all) 

class(all$Price) 
all$Price <- as.numeric(all$Price) 
class(all$Price) 
sum(is.na(as.numeric(all$Price))) ## of NAs 

xt<- as.xts(all, order.by= as.POSIXct(all$Time)) 
head(xt) 
l<- list(xt) 
class(l) 
head(l[[1]]) 
dim(l[[1]]) 
rRTSCov(l, cor=FALSE, startIV=NULL, noisevar = NULL, 
     K = 300 , J = 1, K_cov = NULL , J_cov = NULL, 
     K_var = NULL , J_var = NULL, eta = 9, makePsd = FALSE) 

OUTPUT:

> library(highfrequency) 
> head(all) 
          Time Price 
1 2015/06/29 09:30:00.127000000 163.98 
2 2015/06/29 09:30:00.173000000 163.92 
3 2015/06/29 09:30:00.173000000 163.98 
4 2015/06/29 09:30:00.173000000 163.98 
5 2015/06/29 09:30:00.173000000 163.98 
6 2015/06/29 09:30:00.173000000 163.99 
> dim(all) 
[1] 29148  2 
> class(all$Price) 
[1] "numeric" 
> all$Price <- as.numeric(all$Price) 
> sum(is.na(as.numeric(all$Price))) ## of NAs 
[1] 0 
> xt<- as.xts(all, order.by= as.POSIXct(all$Time)) 
> head(xt) 
        Time       Price  
2015-06-29 09:30:00 "2015/06/29 09:30:00.127000000" "163.9800" 
2015-06-29 09:30:00 "2015/06/29 09:30:00.173000000" "163.9200" 
2015-06-29 09:30:00 "2015/06/29 09:30:00.173000000" "163.9800" 
2015-06-29 09:30:00 "2015/06/29 09:30:00.173000000" "163.9800" 
2015-06-29 09:30:00 "2015/06/29 09:30:00.173000000" "163.9800" 
2015-06-29 09:30:00 "2015/06/29 09:30:00.173000000" "163.9900" 
> l<- list(xt) 
> class(l) 
[1] "list" 
> head(l[[1]]) 
        Time       Price  
2015-06-29 09:30:00 "2015/06/29 09:30:00.127000000" "163.9800" 
2015-06-29 09:30:00 "2015/06/29 09:30:00.173000000" "163.9200" 
2015-06-29 09:30:00 "2015/06/29 09:30:00.173000000" "163.9800" 
2015-06-29 09:30:00 "2015/06/29 09:30:00.173000000" "163.9800" 
2015-06-29 09:30:00 "2015/06/29 09:30:00.173000000" "163.9800" 
2015-06-29 09:30:00 "2015/06/29 09:30:00.173000000" "163.9900" 
> dim(l[[1]]) 
[1] 29148  2 
> rRTSCov(l, cor=FALSE, startIV=NULL, noisevar = NULL, 
+   K = 300 , J = 1, K_cov = NULL , J_cov = NULL, 
+   K_var = NULL , J_var = NULL, eta = 9, makePsd = FALSE) 
Error in if (a < b) { : missing value where TRUE/FALSE needed 
In addition: Warning messages: 
1: In as.double.xts(pdata) : NAs introduced by coercion 
2: In as.double.xts(pdata) : NAs introduced by coercion 

任何想法爲什麼它說錯誤if(a < b){:缺少值,其中TRUE/FALSE需要

謝謝。

+0

爲什麼你的'price'列是一個字符向量而不是數字?嘗試使用'all $ Price < - as.numeric(全部$ Price)'來更改它。如果這給你一個「NAs介紹」的警告,你需要用'all [is.na(as.numeric(all $ Price))]'查看原始'all'數據中的那些行,因爲它們包含不能轉換成數字。例如,它們可能包含逗號 –

+0

那裏看起來有0個NAs,向量是數字已經是嗯... – user3022875

回答

0

rRTSCov詢問xts對象的名單,但你是一個ts對象傳遞給它的列表:

xt<-as.ts(all$Price) 

如果轉換ts對象爲xts對象這將工作。更改該行:

xt<-as.xts(as.ts(all$Price)) 

你得到一個錯誤的原因是,nrow沒有一個TS對象上工作,但確實在XTS。例如:

nrow(as.ts(1:5)) 
# NULL 
nrow(as.xts(as.ts(1:5))) 
# 5 
+0

我改變了我的代碼以包含日期,現在我得到上面的錯誤 – user3022875

相關問題