2016-12-18 9 views
1

私はRが初めてで、PANICrパッケージの関数getnfacを使用する必要があります。そして、その関数は、最初の引数としてxtsオブジェクトしか取らないようです。しかし、私はいくつかの読書を通過した後、私はまだxtsオブジェクトが何かを理解していない。誰もmatrixxtsオブジェクトに変換する方法を教えてください。行列をxtsオブジェクトに変換する

以下、私はreturn行列を第1引数として使用します。したがって、returnxtsオブジェクトに変換するだけで済みます。

getnfac(return,143,"BIC3") 
Error in getnfac(return, 143, "BIC3") : 
    x must be an xts object so lags and differences are taken properly 

答えて

2

xts拡張可能な時系列オブジェクトであり、いくつかのビットを有する実質的に規則的tsオブジェクト(またはより正確にzooオブジェクト)を加えました。
名前の「拡張可能な」部分は、自分が選択した属性をどのように追加できるかを表します。

matrixが非常に簡単に多変量の時系列に変換することができるが

m <- matrix(1:16, 4) 
m.ts <- ts(m) 
index(m.ts) 

xtsは、日付または時刻形式

であると、そのインデックス(各サンプルを採取したものを一度に記述するベクトル)が必要
library(xts) 
m <- matrix(1:16, 4) 
d <- as.Date(1:nrow(m)) 
m.xts <- xts(m, order.by=d) 
index(m.xts) 

データが等間隔でサンプリングされている場合は、上記のようなダミーインデックスがおそらく大丈夫です。そうでなければ、サンプリング時間に対応するベクトルを供給する必要があります。

0

私の意見では、getnfac()関数の最初の引数は、データを含む行列である必要があります。

上記の回答に加えて、 coredata()xtsオブジェクトを使用して行列形式を変換することができます。

+0

あなたの意見ですか? 'getnfac'のソースコードを引用するには、4行目:' is.xts(x)|| stop( "xはxtsオブジェクトでなければならないので遅れたり、相違が適切に取られます")。 2つの方法はありません。 'xts'オブジェクトを提供するか、プロセスが停止します。 – AkselA

+0

@AkselA私は彼が彼がAPIデザインがマトリックスを取るべきだと思っていると思うと思う。この回答は本当に質問のコメントになるはずですが、IIRCではコメントを残すために20人の担当者が必要です。 ここで 'coredata()'はxtsをmatrixに変換するのに対し、ここで求められるのはmatrixをxtsに変換する方法です。 –

関連する問題