%*%
演算子を使用して時系列を表すベクトルに重みのベクトルを適用するコードを使用しています。時系列にxtsを使用したいのですが、%*%
オペレーターはxtsインデックス値を無視する必要があることを理解していません。
coredata()
系列の値をベクトルとして引き出し、値を操作して、それらをマージして戻すことができることはわかっていますが、使用すべき優れたネイティブxts関数があるかどうか疑問に思いました。
編集:私が行動に見ている違いを説明するコードサンプル。
library(xts)
data(sample_matrix)
s<-as.xts(sample_matrix)
o_xts<-s$Open
c_xts<-coredata(s$Open)
len <-length(c_xts)
len2<-len/2
xx<-c_xts[1:len]
outp<-0*0:len2
outp[2] <- xx%*%exp((1:(2*len2))*1.i*pi/len2)
#completes without issue
len <-length(o_xts)
len2<-len/2
yy<-o_xts[1:len]
outp<-0*0:len2
outp[2] <- yy%*%exp((1:(2*len2))*1.i*pi/len2)
Warning message:
In outp[2] <- yy %*% exp((1:(2 * len2)) * (0+1i) * pi/len2) :
number of items to replace is not a multiple of replacement length