私は、最も近い位置を特定して、近い位置(cP)を示すようにしています。Rエラー:交換に長さがありません
はのは、私は次があるとしましょう:
indicator.Trade=c(1,1,0,0,-1,0,0,0,1,1,0,-1,-1)
cP=c(NA,NA,1,1,NA,-1,NA,NA,1,NA,NA,1,NA)
## If indicator.Trade[1] is 1, I want to obtain order.book[1,1]=1 and order.book[2,1]=3.
## If indicator.Trade[2] is 1, I want to obtain order.book[1,2]=2 and order.book[2,2]=3.
order.book=matrix(0,nrow=2,ncol=(length(indicator.Trade)-1))
for(i in 1:(length(indicator.Trade)-1)){
if((indicator.Trade[i]==1)){
order.book[1,i]=i
order.book[2,i]=head(which(cP[c((i):(length(indicator.Trade)-1))]==1),1)
} else if(indicator.Trade[i]==-1){
order.book[1,i]=i
order.book[2,i]=head(which(cP[c((i):(length(indicator.Trade)-1))]==-1),1)
} else {
order.book[1,i]=i
order.book[2,i]=0
}
}
しかし、私は次のエラーを取得上記のコードを実行している:
in order.book[2, i] = head(which(cP[c((i):(length(indicator.Trade) - :
replacement has length zero
を私は手動で置き換えてみました:
i=1 and i=(length(indicator.Trade)-1)
示唆したようにSimple for loop in R producing "replacement has length zero" in Rで数値(0)をチェックするが、そうではないようだ。私はここで何が欠けていますか?
編集
私はちょうど
head(which(cP[c(((length(indicator.Trade)-1)):(length(indicator.Trade)-1))]==1),1)
[1] 1
だから、正しいインデックス位置を見つけるための私のコードが間違っているだろうと気付きました。しかし、私はまだそれを実行することを期待しています。
は私が一度に株を買ってきた場合考えてみましょう:1,3,4を。これは指標である。この場合のトレード。 特定の条件が満たされるたびに株式を売りたいです。したがって、条件が満たされている場合:2,5 ...時間= 2で1から株式を売りたい、時間= 5で3と4から株式を売りたい。それはcPの目的である;条件が満たされたときを示します。希望は私が何をやっているのか説明するのに役立ちます。可能であれば、正しいインデックス位置を取得する方法を知っていますか? – mathnoob
私はあなたがインデックス作成を言うとき、データ構造からサブスクリプトとサブセットの値を参照していると思いますか? – Sathish
サブスクリプトとサブセットは、 '$'、 '[]'、 '[[]]'で行うことができます。それらのうちの1つを、変数 – Sathish